perm filename SCOLB.F4[TMP,LCS]2 blob sn#121519 filedate 1974-09-17 generic text, type T, neo UTF8
00100	C  THIS PROGRAM IS THE PROPERTY OF LELAND SMITH, PROFESSOR OF MUSIC
00200	C  AT STANFORD UNIVERSITY.  IT MAY NOT BE COPIED OR ALTERED IN ANY
00300	C  WAY WITHOUT WRITTEN PERMISSION OF THE AUTHOR.
00400	
00500	
00600	C   6/10/72 **********  SCORE  **********  LELAND SMITH, SEP.1969
00700	
00800	C   THIS PROGRAM WRITES NOTE LISTS FOR THE PDP10 SOUND 
00900	C   GENERATION PROGRAM.
01000	C   IF # OF INSTS IS CHANGED, ALSO CHANGE # IN 'INFO' FORMAT.
01100	C   LOAD 'SCORE' WITH BRZ.REL (RAN. NUM GENERATOR),SPRINT.MAC AND,
01200	C   SCANW, (AND QUAD AND QUADO WHEN THEY ARE READY) AND
01300	C   IF DESIRED, A SUBROUTINE WITH THE FOLLOWING HEADING:
01400	C	SUBROUTINE SUBR
01500	C	COMMON /INS/ INST(27),BG(60)
01600	C	COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF
01700	C   INUM=INST#  IPAR=PARAM#  
01800	C   BT=BASIC TIME P1 WHEN SUBROUTINE IS CALLED
01900	C   IF IREST IS <0, THAT NOTE WILL BE A REST.  
02000	C   INST=INST. NAME,  BG=INSTS' BEGIN TIMES.
02100	C   NOTE #S IN SUBROUTINE: (1-84)  C4=37  FS4=43  C5=49  ETC.
02200	C   F1=86  F15=100 (NO F16!)
02300	
02400		COMMON /Q/ BNW(100),NWZ /INS/INST,BG /TYP/SOS,JOUT
02500	CC 7/74 COLGATE  COMMON/TYP/ IS FOR COLTTY ROUT.
02600		DIMENSION ROFF(27),V(2000),NP(27),PCH(27,32),INST(27)
02700		1 ,RDEV(27),IPT(27,31),XT(27),BG(60),OTH(20,16),SCAL(101)
02800		1 ,IV(2000),NCNT(27,32),P1(27),IT(30),JFM(4),JNP(80)
02900		1 ,IOUT(70),IFM(80),COPY(30),LIST(78),JPT(837)
03000		1 ,FINM(6),TINST(5),TPALN(4),ENFI(5),TEDIT(4),INVIS(27)
03100	C   WITH VX,IOUT AT 70 AND IFM AT 80 OK FOR ONLY 
03200	C   40 LIT CHARS + 30 PARAMS PER INST.
03300	C   60 BG TIMES AVAILABLE.  FOR INSTS AND INSERTS AND EDITS.
03400		COMMON P(30),J,L,CNT(27),BT,PL(48),MK,DF,DUR(27)
03500		1 ,IQ(27),KL,X,ZPAR,KA,LK,NNUM,JJ,JA,ISUB,NFLG,IXX,ISEMI,IQT
03600		1 ,INP(72),VX(70),ISCA(12),IDAT(11),IAMP,K,KN,M,ML,CODE,IBLA
03700		EQUIVALENCE (PP1,P(1)),(P(2),P2),(P(3),P3),(P(4),P4),
03800		1 (VX1,VX(1)),(INP1,INP(1)),(PL4,PL(4)),(IPP,ISCA(2))
03900		1 ,(IEN,ISCA(4)),(IPT,JPT),(ISS,ISCA(9)),(ITT,ISCA(11))
04000		1 ,(IE,ISCA(5)),(ID,ISCA(3)),(IF,ISCA(6)),(IAA,ISCA(10))
04100		1 ,(VX2,VX(2)),(VX3,VX(3)),(NCNT,PCH),(VX4,VX(4)),(INP,JNP)
04200		1 ,(VX5,VX(5)),(IDOT,IDAT(11)),(VX,IOUT),(IFM3,IFM(3))
04300		1 ,(IT,INP(27)),(V,IV),(PLAY,ISCA(7)),(IFM2,IFM(2))
04400		1 ,(IFM4,IFM(4)),(IFM(3),LIST)
04500		DATA KZY/27/,ISEMI/';'/,RTF/.05/,IQT/'"'/
04600		1, JFM(3)/','/
04700	C  IAA=A  ID=D  IE=E  IF=F  IEN=N  IPP=P  ISS=S  ITT=T
04800		DATA KSLA/'/'/,IBLA/' '/,BLA/' '/,IXX/'X'/,ITMPO/'TEMPO'/
04900		1 ,ISCA/'C','P','D','N','E','F','PLAY;','G','S','A','T','B'/
05000		1 ,IDAT/'0','1','2','3','4','5','6','7','8','9','.'/
05100		1 ,SCAL/'C/8','CS/8','D/8','DS/8','E/8','F/8','FS/8','G/8',
05200		1 'GS/8','A/8','AS/8','B/8','C/4','CS/4','D/4','DS/4','E/4',
05300		1 'F/4','FS/4','G/4','GS/4','A/4','AS/4','B/4','C/2','CS/2',
05400		1 'D/2','DS/2','E/2','F/2','FS/2','G/2','GS/2','A/2','AS/2',
05500		1 'B/2','C','CS','D','DS','E','F','FS','G','GS','A','AS',
05600		1 'B','C*2','CS*2','D*2','DS*2','E*2','F*2','FS*2','G*2',
05700		1 'GS*2','A*2','AS*2','B*2','C*4','CS*4','D*4','DS*4','E*4',
05800		1 'F*4','FS*4','G*4','GS*4','A*4','AS*4','B*4','C*8','CS*8',
05900		1 'D*8','DS*8','E*8','F*8','FS*8','G*8','GS*8','A*8','AS*8',
06000		1 'B*8','R','F1','F2','F3','F4','F5','F6','F7','F8','F9',
06100		1 'F10','F11','F12','F13','F14','F15','END'/,I1X/'1X'/
06200		1 ,IFM(1)/'('/,IFM2/'1XA5,'/,IFCOM/5H', ',/,IA1/'A1,'/
06300		CALL ERRSET(0)
06400	C  SUPPRESSES UNWANTED ERR MESSAGES
06500		LPAR=0
06600		IPRN=0
06700		QX=0.
06800		MOT=0
06900		RETRO=-1.
07000		INVRT=-1
07100		LCNT=1
07200		PARENS=0
07300	      JZ=1  
07400		CALL RNDINT
07500	C  INIT RAND NUM GENERATOR.
07600	      PR=0  
07700		IAMP=0
07800	C  IAMP IS 'BLANK LINE'FLAG ON PP1-3.
07900	      T5=0  
08000	      NINS=0
08100		K=0
08200		IDALL=-1
08300		QTS=-1.
08400	      KB=0  
08500	      NWZ=1
08600		BNW(1)=0
08700		I=1
08800	      KL=0  
08900	      TP=0  
09000		KN=IBLA
09100	      RA=0  
09200	      CHN=0 
09300		DO 127 K=1,77,3
09400	127	LIST(K)=0
09500	C  INITIALIZES MOTIVIC LIST FOR ERROR FINDING ROUTINE.
09600		NWX=0
09700		BY=-1
09800	      DO 1128 K=1,KZY     
09900		INVIS(K)=0
10000		INST(K)=0
10100		CNT(K)=0
10200		RDEV(K)=0
10300	C  RDEV IS FOR RAND DEVIATIONS AT RUN TIME
10400		NP(K)=0
10500		IQ(K)=0
10600	C   IQ IS FOR RESTART FLAG
10700		IPT(K,1)=0
10800	      DO 1128 L=1,32    
10900	1128   PCH(K,L)=0 
11000	
11100		ITYP=-1
11200	C   TYPE 'FILE NAME', TEMPO FACTOR(0=1), AMPL.FACT(0=1),
11300	C   SECONDS TO BE OMITTED, DUR AT CUTOFF.
11400		JED=-1
11500	2112	TYPE 8002
11600	1112	ACCEPT 77732,INP
11700		JFM(4)='5F)'
11800		JFM(1)='   (A'
11900	C   FOR FREE 'A' FORMAT
12000		CALL FMT(JFM,INP,MLX)
12100		REREAD JFM,K,TF,AMPFAC,OP1,DURX
12200	C  JFM IS THE CURRENT FORMAT STATEMENT
12300		IF(K.NE.'EDIT')GO TO 3112
12400		JED=0
12500		GO TO 2112
12600	C  'E(DIT)' GOES TO EDIT MODE
12700	3112	IF(TF.EQ.0)TF=1.
12800		IF(AMPFAC.EQ.0)AMPFAC=1.
12900	21122	IF(K.NE.'TYPE')GO TO 128
13000		ITYP=0
13100		DATA FINM/30H(' TYPE OUTPUT FILE NAME'/)   /
13150		IFLNM='FOR21'
13200	CC*** 7/74 COLGATE	TYPE FINM
13300	C  TO USE TYPE-IN MODE.  FILE OF INPUT IS WRITTEN ON FOR21.DAT
13400	CC** 7/74 COLGATE	ACCEPT 1127,ISLAC
13500	CC*** 7/74 COLGATE	IF(ISLAC.EQ.IBLA)STOP
13600		REWIND 21
13700	CC** 7/74 COLGATE	WRITE (21,1127) ISLAC
13800		GO TO 3127
13900	11122	FORMAT(1XA5,72A1)
14000	128	IF(K.NE.'INFO')GO TO 3128
14100		TYPE 8002
14200		TYPE 1113
14300		TYPE 118
14400		TYPE 1114
14500		TYPE 8002
14600		GO TO 1112
14700	118	FORMAT(' TO DSK=1, TTY=2, BOTH=0, LPT=22, PROOF=3, DEBUG=4'/)
14800	CC***  TEMPORARY ***8002	FORMAT(' TYPE FILE NAME'/)
14810	8002	FORMAT(' **** NEW VERSION ****',//' TYPE FILE NAME--  '$)
14900	8001	FORMAT(A5,5F)
15000	107	FORMAT(I,A5,5F)
15100	1113	FORMAT('     NAME, TF, AMPFAC, OMIT", DUR".'/)
15200	1114	FORMAT(' N1, N2=RAN NUM, N3=0 LISTS INPUT, N4=SINGLE INST.'/
15300		1 ' IF -- N1=3 DURS ONLY, =4 V ARRAY'/
15400		1 3X' 27 INSTRUMENTS ARE AVAILABLE'/)
15500	1127	FORMAT(A5,72A1)
15600	3128	IF(K.NE.IBLA)IFLNM=K
15700		CALL IFILE(1,IFLNM)
15790	CC*** 7/74 COLGATE	READ(1,107)LN,ISLAC
15800		READ(1,107)LN,IXIN
15802	C  CHECK FOR LINE NUMBERS ONLY.
15805		REWIND 1
15810		CALL IFILE(1,IFLNM)
15900	CC*** 7/74	REREAD 77732,JNP
16000	C   FOR LATER USE
16100	CC** 7/74	IF(LN.NE.0)GO TO 3127
16200	C   JUMP IF THE FILE HAS LINE NUMBERS.
16300	CC*** 7/74	REREAD 1127,ISLAC
16400	C   REREADS FIRST LINE
16500	
16610	3127	ISLAC=(IFLNM.AND."003777777777).OR."550000000000
16655	C MAGIC TO CHANGE LFT. LETTER TO Z(INP. ABCDE BECOMES ZBCDE.DAT)
16660	5127	TYPE 118
16700		IF(DURX.EQ.0)DURX=19999.
16800		IXIN=1
16900	CC -- NOW AT TOP OF PAGE 4(2/74)	DO 1107 K=1,30
17000	CC1107	PL(K)=1.
17100		INONLY=-1
17200		ACCEPT 300,MX,X,Y,Z
17210		IF(MX.NE.99)GO TO 6127
17220		TYPE FINM
17230		ACCEPT 1127,ISLAC
17240		GO TO 5127
17300	6127	IF(Z.NE.0)INONLY=Z
17400		IF(X.NE.0)IXIN=X
17500	C   MX=3 GIVES DURS ONLY
17600	C  TO SUPPRESS LIST OF INPUT DATA, TYPE ANY 3RD NUM. (BUT 9.)
17700	C  (1 1 1 =RECORD,RAN. NUM=1,SUPPRESS INPUT.)
17800		MZ=0
17900		JOUT=5
18000	C  5=OUTPUT TO TTY
18100		SOS=-1.
18200		IF(Y.NE.0)SOS=0  
18300	C  IF 3RD NUM≠0, EDIT FILE WILL PRINT AS IT IS READ.
18400		IF(MX.NE.22)GO TO 2107
18500		JOUT=3
18600	C DIRECT TO LPT AT COLGATE 6/74
18700	CC	JOUT=22
18800	CC	REWIND 22
18900	2107	IF(MX.LE.1)MX=MX-2
19000		IF(MX.EQ.-2.OR.MX.EQ.2.OR.MX.EQ.22)MZ=-1
19100		IF(MX.EQ.4)MZ=-4
19200	CC	IF(SOS.AND.ITYP)WRITE(JOUT,87732)INP
19300	CC*** 7/74 COLGATE	IF(SOS.AND.ITYP)CALL COLTTY(JNP,JOUT,3)
19400	
19500	C   *************** READS INPUT  ***********************
19600	2308	IF(ITYP)GO TO 2127
19700		DATA TINST /25H(' TYPE INST NAME, ETC'/)/
19800		1,TEDIT/20H(' RETYPE LINE?'/  )/
19900	23081	TYPE TINST
20000		ACCEPT 77732,JNP
20100	CC	IF(JED)WRITE(21,77732)INP
20200		IF(JED)CALL COLTTY(JNP,21,5)
20300		JFM(4)='72A1)'
20400	C  PUTS ON LPT AND TTY
20500		GO TO 1074
20600	CC 6/74 COLGATE2127	JREAD=1
20700	CC 6/74 COLGATE 4400	READ(1,77732,END=2337)JNP
20800	2127	IF(READER(JNP))GO TO 2337
20900	C  READS A LINE.  IF END OF FILE, JUMPS.
21000	CC  SEE END OF PG.6	IF(SOS)WRITE(JOUT,87732)INP
21100	CC 7/74	IF(SOS)CALL COLTTY(JNP,JOUT,3)
21200	CC 6/74  COLGATE 	GO TO(441,442,443,444,445,446)JREAD
21300	
21400	441	JFM(4)='72A1)'
21500		IF(LN.EQ.0)GO TO 1074
21600		REREAD 2114,LN,INP
21650	C****  READS ONLY FILES WITH LINE NUMBERS!
21700		JFM(1)=' (I,A'
21800		CALL FMT(JFM,INP,MLX)
21900		REREAD JFM,LN,J,INP
22000		GO TO 4127
22100	1074	JFM(1)='   (A'
22200		CALL FMT(JFM,INP,MLX)
22300		REREAD JFM,J,INP
22400	4127	IF(JED.OR.K.EQ.'Y')GO TO 41271
22500	C  K CHECK IS TO PASS AFTER RETYPING
22600		TYPE TEDIT
22700		ACCEPT 77732,K
22800		IF(K.EQ.'Y')GO TO 23081
22900		IF(K.EQ.'G')JED=-1
23000	
23100	
23200	41271	IF(J.EQ.IBLA)GO TO 2308
23300		MLX=1
23400		IZ=0
23500		JA=-1
23600		ISUB=4
23700		ALL=1.
23800		VX1=0
23900		VX2=0
24000		VX3=0
24100		LK=-1
24200		K=0
24300		IF(V(I-1).NE.-9900.-BY)GO TO 364
24400		BY=-1.
24500		I=I-1
24600	364	DO 361 JD=1,72
24700		N=INP(JD)
24800		IF(N.NE.'R')GO TO 361
24900	C  LOOKS FOR 'RESTART'
25000		DO 3611 M=JD,72
25100		KL=INP(M)
25200		IF(KL.EQ.IBLA.OR.KL.EQ.ISEMI.OR.KL.EQ.KSLA.OR.KL.EQ.',')GO TO 3631
25300	3611	INP(M)=IBLA
25400	C   CHANGES 'RESTART' TO BLANKS
25500	3631	DO 363 N=1,NINS
25600		IF(J.NE.INST(N))GO TO 363
25700		IQ(N)=-1
25800	C   SETS RESTART FLAG.  THIS INST WILL NOW APPEAR WITH NEW NUM.
25900		GO TO 362
26000	363	CONTINUE
26100	361	IF(N.EQ.KSLA.OR.N.EQ.ISEMI)GO TO 6773
26200	6773	K=K+1
26300		IF(K.GT.NINS)GO TO 36
26400		IF(INST(K).NE.J.OR.IQ(K).EQ.-1)GO TO 6773
26500	C   FINDS CORRECT INST NUM.  PASSES RESTARTED INSTS.
26600		LK=K
26700		GO TO 1773
26800	36	IF(J.EQ.'RUN;'.OR.J.EQ.'RUN')GO TO 2337
26900		IF(J.EQ.'INSER'.OR.J.EQ.'EDIT')ISUB=6  
27000		IF(J.EQ.ITMPO.OR.J.EQ.'CONDU'.OR.J.EQ.'PLAY'.OR.ISUB.GT.4)
27100		1GO TO 1773
27200		IF(J.EQ.'SECTI')GO TO 1081
27300	C******************  ABOVE AND BELOW FOR 'SECTIONS'
27400		IF(J.EQ.'END'.OR.J.EQ.'END S'.OR.J.EQ.'FINIS')GO TO 1082
27500	362	LK=NINS+1
27600		IF(LK.GT.KZY)GO TO 99
27700		INST(LK)=J
27800		IZ=LK
27900		GO TO 1773
28000	
28100	C*********** DOWN TO 99 FOR 'SECTIONS'
28200	1083	V(I)=-99.
28300		KL=1
28400		GO TO 3083
28500	C  READS 'PLAY SECT. N1,N2'
28600	1081	V(I)=-199.
28700		KL=4
28800	3083	DO 2081 K=KL,72
28900		IF(INP(K).EQ.IBLA)GO TO 2081
29000		IV(I+1)=INP(K)
29100		I=I+2
29200	3081	BY=-1.
29300		GO TO 2308
29400	2081	CONTINUE
29500	C   READS SECTION IDENTIFIER, -199. MARKS BEGINNING
29600	C1082	IF(V(I-1).EQ.-9900.-BY)I=I-1
29700	C********* FEB 15,71
29800	1082	V(I)=-299.
29900		I=I+1
30000		GO TO 3081
30100	C   MARKS END OF SECTION
30200	C************************
30300	
30400	99	TYPE 199,LN
30500		STOP
30600	199	FORMAT(' ERROR!!  LAST LINE READ =',I6/)
30700	4	IF(LK.LE.NINS)GO TO 8773
30800		IF(ALL.GT.0)GO TO 1004
30900		IF(IDALL.GT.0)GO TO 8773
31000		BG(LK)=VX1
31100		IDALL=LK
31200		GO TO 2004
31300	C 'MOVE' CHANGES IN 'ALINS' CAN'T BE RESET IN INDIV. INSTS.
31400	1004	BG(LK)=VX1
31500		IF(LK.EQ.IZ)VX1=0
31600	C   MAY 3,71 **** ALL PARAMS WILL BE SET UP AT TIME 0.
31700	C   CHECK EFFECT ON 'MOVE'!
31800	C ******** APR.23, 1971  FIXES BG TIMES IN 'MOVE'?????!!!!!!!
31900	2004	NINS=LK
32000		IF(VX3.NE.0)VX2=10000.+VX3
32100		IF(VX2.EQ.0)VX2=-1
32200		DUR(LK)=VX2
32300		GO TO 900
32400	C******** ABOVE FOR REST ONLY ENTRIES.  FEB 18,71
32500	8773	IF(VX2.NE.0)VX1=VX1*10000.+VX2
32600	900	IF(VX1.EQ.BY.AND.J.NE.'PLAY')GO TO 5773
32700	C*********** 'PLAY' IS FOR 'SECTIONS'
32800		BY=VX1
32900	C  BY=CURRENT BG TIME.
33000		V(I)=-9900.-BY
33100		I=I+1
33200		IF(NWZ.NE.0)CALL BGSORT(BY)
33300	5773	IF(J.EQ.'TEMPO')GO TO 1106
33400		IF(J.EQ.'CONDU')GO TO 3018
33500		IF(J.EQ.'PLAY')GO TO 1083
33600	C*********** ABOVE FOR 'SECTIONS'
33700	4773	NW=LPAR
33800		IF(I.GT.1900.)TYPE 107,I
33900		ALL=1.
34000		DF=0
34100		ISUB=1
34200	1299	IF(JZ.NE.0)GO TO 1773
34300	
34400	
34500	7773	IF(ITYP)GO TO 77731
34600		DATA TPALN /20H(' TYPE A LINE'/)   /
34700	77734	TYPE TPALN
34800		ACCEPT 77732,JNP
34900	CC	IF(JED)WRITE(21,77732) INP
35000		IF(JED)CALL COLTTY(JNP,21,5)
35100		IF(INP1.EQ.IBLA)GO TO 77734
35200		GO TO 77733
35300	77732	FORMAT(80A1)
35400	CC87732	FORMAT(1X80A1)
35500	CC 6/74 COLGATE 77731	JREAD=2
35600	CC 6/74 COLGATE 	GO TO 4400
35700	77731	IF(READER(JNP))GO TO 2337
35800	C  READS A LINE.  IF END OF FILE, JUMPS.
35900	442	IF(LN.NE.0)REREAD 2114,LN,INP
36000		IF(INP1.EQ.IBLA)GO	IF(JZ.NE.0)GO TO 1773
34300	
34400	
34500	7773	IF(ITYP)GO TO 77731
34600		DATA TPALN /20H(' TYPE A LINE'/)   /
34700	77734	TYPE TPALN
34800		ACCEPT 77732,JNP
34900	CC	IF(JED)WRITE(21,77732) INP
35000		IF(JED)CALL COLTTY(JNP,21,5)
35100		IF(INP1.EQ.IBLA)GO TO 77734
35200		GO TO 77733
35300	77732	FORMAT(80A1)
35400	CC87732	FORMAT(1X80A1)
35500	CC 6/74 COLGATE 77731	JREAD=2
35600	CC 6/74 COLGATE 	GO TO 4400
35700	77731	IF(READER(JNP))GO TO 2337
35800	C  READS A LINE.  IF END OF FILE, JUMPS.
35900	442	IF(LN.NE.0)REREAD 2114,LN,INP
36000		IF(INP1.EQ.IBLA)GO TO 77731
36100		IF(JED)GO TO 77733
36200		TYPE TEDIT
36300		ACCEPT 77732,K
36400		IF(K.EQ.'Y')GO TO 77734
36500		IF(K.EQ.'G')JED=-1
36600	C   DOESN'T WORK FOR EDITS AND INSERTS YET???
36700	
36800	
36900	77733	MLX=1
37000	C   'LISTS' MUST END WITH * 
37100	1773	IF(IPRN.EQ.0)GO TO 17732
37200		L=I-1
37300		IF(QTS.AND.V(I-1).EQ.999.)L=L-1
37400		IPRN=IPRN-1
37500		IF(PARENS.EQ.0)GO TO 17733
37600		PARENS=0
37700		LIST(LCNT+2)=L
37800		LCNT=LCNT+3
37900		IF(IPRN.EQ.0)GO TO 17732
38000		IPRN=0
38100	17733	LIST(MOT)=L
38200		MOT=0
38300	C   FOR ERROR TRAP
38400	
38500	17732	JZ=0
38600		N=0
38700	17731	ML=MLX
38800	
38900	C   BIG LOOP -- TO END OF PAGE 1.
39000		JD=ML
39100	975	N=INP(JD)
39200		IF(N.EQ.IBLA.OR.N.EQ.',')GO TO 236
39300	C ((((())))) MAY 13,71 /Z (D4/E/X 2 3)/ CS/ ETC.  CAN USE 26 LABELS.
39400	33611	IF(N.NE.'('.AND.N.NE.')')GO TO 2361
39500		INP(JD)=IBLA
39600		L=JD-1
39700	5113	IF(INP(L).NE.IBLA)GO TO 2113
39800		L=L-1
39900		GO TO 5113
40000	2113	IF(N.EQ.')')GO TO 3361
40100		IF(PARENS.EQ.0)GO TO 1140
40200		LCNT=LCNT+3
40300		IF(MOT.NE.0)GO TO 11403
40400		MOT=LCNT-1
40500	1140	DO 11401 JC=1,LCNT-1,3
40600		IF(INP(L).NE.LIST(JC))GO TO 11401
40700	C  FINDS DUPLICATE IDENTIFIER
40800		TYPE 11402,INP(L)
40900		GO TO 99
41000	11403	TYPE 11404
41100		GO TO 99
41200	11404	FORMAT(' MORE THAN 2 PARENS OPEN'/)
41300	
41400	11402	FORMAT(' MOTIVIC (',A1,') USED TWICE')
41500	11401	CONTINUE
41600		LIST(LCNT)=INP(L)
41700		PARENS=-1.
41800		INP(L)=IBLA
41900		LIST(LCNT+1)=I
42000		GO TO 236
42100	C ''''''' FOR SINGLE QUOTES
42200	3361	IPRN=IPRN+1
42300		GO TO 236
42400	C  JUMPS BACK INTO QUOTE SECTION
42500	CQ	IF(PARENS.EQ.0)GO TO 2140
42600	CQ	LIST(LCNT+2)=L
42700	CQ	LCNT=LCNT+3
42800	CQ	PARENS=0
42900	CQ	GO TO 33612
43000	CQ2140	LIST(MOT)=L
43100	CQ	GO TO 33612
43200	CQC )))))))))))  LAST ) CAN'T APPEAR AT END OF LINE!!
43300	C @@@@@@@@@@@@ /@Z/DS3/ ETC. 
43400	2361	IF(N.NE.'@')GO TO 5361
43500		DO 113 L=1,72
43600		K=JD+L
43700	C   K IS USED AT 240!!!
43800		JG=INP(K)
43900		IF(JG.NE.'-')GO TO 6113
44000		RETRO=0
44100		INP(K)=IBLA
44200		GO TO 113
44300	6113	IF(JG.NE.'$')GO TO 7113
44400	C  '$' IS FOR INVERSIONS IN 'NOTES'
44500		INVRT=0
44600		GO TO 113
44700	7113	IF(JG.NE.IBLA)GO TO 4113
44800	113	CONTINUE
44900	4113	DO 6361 L=1,LCNT,3
45000		IF(JG.NE.LIST(L))GO TO 6361
45100		VX1=0
45200		DO 40 M=JD+2,72
45300		JG=INP(M)
45400		IF(JG.EQ.IBLA)GO TO 40
45500		IF(JG.EQ.KSLA.OR.JG.EQ.ISEMI.OR.JG.EQ.'*')GO TO 140
45600		ML=M
45700		GO TO 240
45800	40	CONTINUE
45900	240	JC=JA
46000		JA=-1
46100		INP(K)=IBLA
46200		CALL SCANR
46300		JA=JC
46400	140	JC=1
46500		KN=LIST(L+1)
46600		M=LIST(L+2)+1
46700		IF(RETRO)GO TO 640
46800		JC=M-1
46900		M=KN-1
47000		KN=JC
47100		JC=-1
47200		RETRO=-1.
47300	640	IF(INVRT)GO TO 940
47400	840	X=V(KN)
47500		V(I)=X+VX1
47600	C  FINDS CENTER FOR INVERSION (+TRANSP.)
47700		I=I+1
47800		KN=KN+JC
47900		IF(V(KN-JC).NE.85.)GO TO 940
48000		V(I-1)=85.
48100		GO TO 840
48200	
48300	940	Z=V(KN)
48400		IF(INVRT.EQ.0)GO TO 440
48500		IF(VX1.EQ.0)GO TO 540
48600	C  " @Q N "  WHERE N= 1/2 STEPS IN 'NOTES' OR MULT FACTOR IN OTHERS.
48700		IF(CODE.EQ.-33.)GO TO 440
48800		V(I)=Z*VX1
48900		GO TO 7361
49000	440	IF(Z.EQ.85.)GO TO 540
49100		Y=0
49200		IF(INVRT.EQ.0)Y=(X-Z)*2.
49300		V(I)=Z+VX1+Y
49400		GO TO 7361
49500	540	V(I)=Z
49600	7361	I=I+1
49700		KN=KN+JC
49800		IF(KN.NE.M)GO TO 940
49900	
50000		INVRT=-1
50100		RB=V(I-1)
50200		DO 8361 L=JD,72
50300		JG=INP(L)
50400	C   PUT IN NOV 25, 72
50500		IF(JG.EQ.ISEMI)GO TO 93612
50600		INP(L)=IBLA
50700		IF(JG.EQ.KSLA)GO TO 9361
50800		IF(JG.EQ.')')IPRN=IPRN+1
50900	8361	IF(JG.EQ.'*')IAMP=-1
51000	9361	MLX=L
51100	C  FIX THIS & =IBLA BY CHNGING DO LOOP TO 'GO TO' AT 6721,2722
51200		IF(IAMP.EQ.0.AND.QTS)GO TO 1773
51300		JZ=-1
51400	93612	IF(IAMP.EQ.0)GO TO 93611
51500	C   NOV 25, 72
51600		IF(QTS)GO TO 3013
51700		GO TO 2722
51800	C  THESE ARE FOR "LIT" ITEMS
51900	C  *******  DO NOT USE '@-' OR '@$' WITH 'LIT', RLIST OR RNOT****
52000	C  NO $ WITH FUNC.  $ WITH NUMS AND RHY CAN GIVE NEG RESULT -- TRY IT!
52100	93611	IF(JG.EQ.ISEMI)GO TO 7773
52200		JZ=0
52300		IF(IPRN.NE.0)GO TO 1773
52400	C ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑PICKS UP ' @X)/ ' SITUATION.  22/6/73
52500		GO TO 236
52600	C  LAST TIME FOR QUOTES
52700	
52800	C********↑↑ ↑↑ WAS TO 6017  JUNE 10,71
52900	C   JUMPS TO END STRING OF QUOTES
53000	6361	CONTINUE
53100		GO TO 99
53200	C @@@@@@@@@@@@@@@@@@@@@@@@@@
53300	5361	IF(N.EQ.'$')GO TO 99
53400	C  FOUND $  BUT NO @!
53500		IF(N.NE.ID.OR.ISUB.NE.1)GO TO 53611
53600		IF(INP(JD+1).NE.IF)GO TO 236
53700	C  JUMP IF NOT DUTY FACTOR
53800		DF=DF-100.
53900		GO TO 43615
54000	53611	IF(N.NE.ISS.OR.INP(JD+1).NE.'U')GO TO 53612
54100		DF=DF-200
54200	C  FOR SUBROUTINE FLAG.  CAN'T CALL SUBR AT SAME TIME AS REP OR X!!!!
54300		GO TO 43615
54400	53612	IF(N.NE.IAA)GO TO 43611
54500	C   FINDS 'ALL'.
54600		IF(INP(JD+1).NE.'L')GO TO 236
54700		ALL=-1.
54800		GO TO 43615
54900	C  TYPE 'ALL' AFTER PARAM NUM TO PUT DATA IN ALL INSTS.
55000	
55100	C  QUAD CALL MUST BE IN 1ST OF 5 PARAMS.  QUAD MUST BE FOLLOWED
55200	C   BY SPC, / OR ;.  OTHER CALLS SUCH AS MOVE,NUM ETC. CAN
55300	C   APPEAR BEFORE  / OR ;, BUT "ALL" MUST! APPEAR 
55400	C   BEFORE! QUAD (IF USED).
55500	C  ADD AN "F" TO QUAD FOR FUNCTIONS, AN "X" FOR X,Y COORDS.
55600	C BASIC QUAD PRODUCES CIRCLES. /DEGS/RADIUS/CENT. X/CENT. Y/
55700	C  QUADX -- /X /Y / (5TH PARAM WILL ALWAYS BE WASTED)
55800	43611	IF(N.NE.'Q'.OR.INP(JD+1).NE.'U')GO TO 4361
55900		QX=-13.
56000		DO 43612 N=JD,72
56100		J=INP(N)
56200		IF(J.EQ.IXX)QX=QX-1.
56300		IF(J.EQ.IF)QX=QX-2.
56400		IF(J.EQ.IBLA.OR.J.EQ.KSLA.OR.J.EQ.ISEMI.OR.J.EQ.',')GO TO 236
56500	43612	INP(N)=IBLA
56600	4361	IF(N.NE.'I')GO TO 43613
56700		IF(ISUB.NE.4)GO TO 43613
56800	C  NEXT MAKES INST NAME, P1 AND P2 INVISIBLE (REPLACES SEG, ETC.)
56900		INVIS(LK)=-1
57000	43615	DO 43614 L=JD,72
57100		N=INP(L)
57200		IF(N.EQ.IBLA.OR.N.EQ.','.OR.N.EQ.ISEMI.OR.N.EQ.KSLA)GO TO 236
57300	43614	INP(L)=IBLA
57400	43613	IF(N.NE.KSLA)GO TO 636
57500		MLX=JD+1
57600		JZ=-1
57700		INP(JD)=ISEMI
57800	436	IF(INP(MLX).NE.IBLA)GO TO 336
57900		MLX=MLX+1
58000		GO TO 436
58100	636	IF(N.NE.ISEMI)GO TO 936
58200	336	IF(ISUB.EQ.104)GO TO 104
58300		IF(ISUB.GT.3)GO TO 1899
58400	   	GO TO (101,102,103),ISUB
58500	C             PAR  MOV LIST  OTHERS
58600	936	IF(N.NE.IDOT)GO TO 736
58700		L=INP(JD+1)
58800		DO 836 KL=1,10
58900	836	IF(L.EQ.IDAT(KL))GO TO 236
59000		IF(CODE.EQ.-22.)INP(JD)=1
59100		GO TO 236
59200	C   CHANGES DOTTED RHYTHMS TO '1'S.
59300	736	IF(N.NE.'*')GO TO 136
59400		IAMP=-1
59500		INP(JD)=IBLA
59600	C  ******* WAS ISEMI ****** WHY?
59700	136	IF(N.NE.IQT)GO TO 236
59800		DO 1361 K=JD+1,72
59900		IF(INP(K).NE.IQT)GO TO 1361
60000		JD=K+1
60100		GO TO 975
60200	C   SKIPS MATERIAL IN QUOTES
60300	1361	CONTINUE
60400		GO TO 99
60500	C   OPEN QUOTES
60600	236	JD=JD+1
60700		IF(JD.LT.73)GO TO 975
60800		TYPE 1236
60900		GO TO 99
61000	1236	FORMAT(' MISSING SEMICOLON')
     

00100	101	N=INP(ML)
00200		IZ=ML
00300		ML=ML+1
00400		IF(N.EQ.IBLA)GO TO 101
00500	C ⊗⊗⊗⊗⊗ MAY 13,71 @@@@@@@@@@
00600		JA=-1
00700		IF(N.EQ.IPP)GO TO 1
00800		IF(N.EQ.IE)GO TO 2308
00900		IF(N.EQ.'R')GO TO 2337
01000	C   'RUN' MAY REPLACE 'END' FOR LAST INST.
01100		IF(N.EQ.ID)GO TO 7720
01200		GO TO 99
01300	1	CALL SCANR
01400	 	LPAR=VX1
01500		IJ=LPAR
01600		IF(QX.GE.0)GO TO 5703
01700		IJ=LPAR+4
01800	C  SETS UP PARAM FOR QUAD CALL
01900		V(I)=IJ+LK*10000
02000		V(I+1)=2*ALL
02100	C  TEST "ALL" FEATURE HERE!!!!!!!
02200	C  X=-13(DEGREES),=-14(X,Y),=-15(CIRCLE FUNCTS),=-16(LINE FUNCTS)
02300		V(I+2)=QX
02400		I=I+3
02500		QX=0.
02600	5703	IAMP=0
02700		IF(IJ.GT.NP(LK).AND.IJ.LT.31)NP(LK)=IJ
02800		IF(LPAR.EQ.32)LPAR=1
02900		V(I)=LPAR+LK*10000
03000	C  +1=WDCNT, +2=CODE, +3='NM' CCCCC
03100		IJ=I+1
03200		I=I+4
03300		ITMP=0
03400		CODE=0
03500		NFLG=1
03600		ML=IZ+M
03700	C   RE=REP  R=RHY  L=LIT  M=MOVE  MX=MOVX  N=NOTES  NU=NUM  
03800	C   S--L=SUBL  S--N=SUBN  T=TAP  RT=RTAP  RL=RLIST  RN=RNOTES
03900	C  QU=QUADC  QUX=QUADX 
04000	5702	ML=ML+1
04100		IF(ML.GT.72)GO TO 99
04200		N=INP(ML)
04300		IF(N.EQ.IBLA.OR.N.EQ.',')GO TO 5702
04400		NL=INP(ML+1)
04500		JA=-1
04600		ISUB=0
04700		IF(N.EQ.IXX)GO TO 2703
04800		IF(N.EQ.'R')GO TO 6702
04900		IF(N.EQ.IF)GO TO 8702
05000	4005	JA=0
05100		IF(N.EQ.IEN)GO TO 6005
05200		IF(N.EQ.'M')GO TO 703
05300		IF(N.EQ.'L')GO TO 2720
05400		IF(N.EQ.ISS)GO TO 6703
05500		IF(N.EQ.ITT)GO TO 4018
05600		IF(N.EQ.IQT)GO TO 5720
05700		IF(N.EQ.ISEMI)GO TO 2018
05800		IF(N.EQ.IPP)JA=-1
05900	C  FOR /P5  P3/
06000		CALL SCANR
06100		IF(ISUB.EQ.8)GO TO 8
06200		I=I+JJ
06300		V(IJ+1)=NNUM+DF
06400		IF(JJ.EQ.1)GO TO 4006
06500	C  IF NNUM IS '-2' THEN NOTES ARE PRINTED
06600		IF(NNUM.NE.-2)GO TO 5006
06700		IX=IJ+3
06800		DO 2006 K=2,JJ,3
06900	2006  CALL RANR(VX,K)
07000	C   FOR RAN. SELEC. OF NOTES.  FINDS HIGHEST NOTE.
07100	5006	IX=IJ+2
07200		DO 6006 K=1,JJ
07300	6006	V(IX+K)=VX(K)
07400		V(IX+JJ-2)=1.
07500	C  ABOVE ENSURES THAT LAST RAND. UNIT REACHES 100% - 5/74 *********
07600		GO TO 3013
07700	4006	IF(JA)VX1=VX1/100.+9999.
07800	C  CHANGES /P5 P3/ TO /P5 9999.03/ ***** CHECK OUT ON OTHER MACHINES!
07900		V(I-1)=VX1
08000		GO TO 3013
08100	6702	IF(NL.EQ.IE)GO TO 2703
08200	C   JUMP IF "REP"
08300		IF(NL.EQ.ITT)GO TO 4018
08400	C   JUMP IF "RTAP"
08500		CODE=-22
08600		IF(NL.EQ.'L')CODE=-46.0
08700	C   JUMP IF "RLIST" (LIST OF RAND SELECTIONS)
08800		IF(NL.NE.IEN)GO TO 1016
08900	C   JUMP IF NOT "RNOTES"
09000		JA=0
09100	C   FOR SCANR
09200		CODE=-36.
09300		GO TO 1016
09400	6005	CODE=-33
09500		IF(NL.NE.'U')GO TO 1016
09600		CODE=-44.
09700	1610	JA=-1
09800		GO TO 1016
09900	8702	CODE=-35
10000		IF(NL.EQ.'U')GO TO 1016
10100		ML=ML+1
10200		CALL SCANR
10300	7	V(IJ+1)=CODE+DF
10400		V(IJ+2)=1.
10450		IF(VX1.GT.15)GO TO 99
10475	C TRAPS F NUMS >15.
10500		V(I)=VX1+85.
10600		GO TO 7703
10700	C********  MOVE IS NEXT ***********
10800	703	BW=V(IJ-2)
10900		IC=0
11000		DO 7031 K=ML+1,72
11100		IF(INP(K).EQ.ISEMI)GO TO 8031
11200	7031	IF(INP(K).EQ.IXX)IC=-1
11300	C   IC=-1 IS FOR MOVX
11400	8031	I=I-1
11500		V(I)=0
11600		X=-9900.-BY
11700		IF(BY.EQ.0)X=-9900.-BG(LK)
11800	   	IF(BW.EQ.X)GO TO 8005
11900		IF(BW.NE.-9900.-BY)GO TO 1102
12000		V(IJ-2)=X
12100		GO TO 8005
12200	1102	V(IJ)=V(IJ-1)
12300		V(IJ-1)=X
12400		IJ=IJ+1
12500		I=I+1
12600	8005	LP=IJ-1
12700		BW=-9900.-X
12800		ISUB=2
12900		IZ=-1
13000	C  ABOVE ARRANGES NECESSARY BG TIME HEADINGS.
13100	4703	GO TO 1299
13200	102	IF(IZ.LT.0)GO TO 2102
13300	C  SKIPS NEXT FIRST TIME
13400		BW=V(ICT)+BW
13500		V(I)=-9900.-BW
13600		V(I+1)=V(LP)
13700		V(I+2)=(JJ+2)*ALL
13800		V(I+3)=CODE+DF
13900		I=I+4
14000		IZ=1
14100	2102	IF(BW.LT.10000.)CALL BGSORT(BW)
14200	C   ROUND-OFF NONSENSE
14300	2	VX3=-9900.
14400		VX2=VX3 
14500		CALL SCANR
14600		IF(JJ.GT.0)GO TO 5102
14700		JJ=ILIT
14800	C SLASH WILL REPEAT MOVE INPUT -- 6/74
14900		DO 6102 K=1,JJ
15000	6102	VX(K)=VX(K+20)
15100		GO TO 5005
15200	C::::::::::::::: PUT THIS, AND AT 5505, IN SCOR5 ALSO ::::::::::::::
15300	5102	IF(JJ.EQ.4)GO TO 99
15400	C  ERROR -- 4 ITEMS IN MOVE IMPOSSIBLE
15500		IF(VX3.NE.-9900.)GO TO 3102
15600		IF(VX2.NE.-9900.)GO TO 4102
15700		VX2=VX1
15800		VX1=10000.
15900	4102	VX3=VX2
16000		JJ=3
16100	C  1,2 OR 3 NUMS CAN BE USED IN NON-RAN MOVES.
16200	3102	IF(IZ.GE.0)GO TO 3006
16300		V(IJ)=(JJ+2)*ALL
16400	C  WORD COUNT
16500		CODE=-55.
16600		IF(JJ.NE.3)CODE=-57.
16700		IF(NFLG)CODE=CODE-1.
16800		IF(IC)CODE=-59.
16900	C  CODE=-56 OR -58 FOR NOTES.
17000		V(IJ+1)=CODE+DF
17100		IZ=0
17200	3006	IF(NFLG.EQ.1)GO TO 5005
17300	      CALL RANR(VX,2)
17400	      IF(JJ.NE.3)CALL RANR(VX,4)
17500	C   FOR RAN. SELEC. OF NOTES.  FINDS HIGHEST NOTE.
17600	5005	ICT=I
17700		ILIT=JJ
17800	C  SAVES FOR SLASH REPEAT FEATURE
17900	  	IJ=IJ+1
18000		DO 1006 K=1,JJ
18100		VX(20+K)=VX(K)
18200	C  SAVES FOR SLASH REPEAT FEATURE
18300	1006	V(IJ+K)=VX(K)
18400		I=I+JJ  
18500		IJ=I+2
18600		IF(IAMP.EQ.0)GO TO 1299
18700	C*************** MAY 18,71 ***** ALWAYS RESETS TO TIME 0 WHEN MOVE IS USED.
18800		V(I)=-9900.-BY
18900		GO TO 8703
19000	
19100	7703	V(IJ)=4.*ALL
19200	8703	I=I+1
19300		GO TO 4773
19400	C   FOR SUBROUTINES, -12=NUMS.  -11=LETTERS.
19500	6703	CODE=-12.
19600		IF(INP(ML+3).EQ.'L')CODE=-11.
19700		V(IJ)=2.*ALL
19800		V(IJ+1)=CODE+DF
19900		I=I-1
20000		GO TO 4773
20100	4018	CNT(LK)=-9900.-BY
20200		P(LK)=V(I-4)
20300	CC 6/74 COLGATE 	JREAD=3
20400	CC 6/74 COLGATE	GO TO 4400
20500		IF(READER(JNP))GO TO 2337
20600	C  READS A LINE.  IF END OF FILE, JUMPS.
20700	443	IF(LN.NE.0)REREAD 107,K,IPT(LK,1)
20800		IF(LN.EQ.0)REREAD 8001,IPT(LK,1)
20900	C   NAME OF RHYTHM FILE. (ONLY ONE PER INST.)  READS DATA JUST BEFORE RUN
21000		IF(NL.NE.ITT)GO TO 2338
21100		CODE=-23.
21200		GO  TO 1016
21300	2338	I=I-4
21400		GO TO 4773
21500	3018	CNT(KZY)=-9900.
21600	CC	JREAD=4
21700	CC COLGATE 6/74	GO TO 4400
21800		IF(READER(JNP))GO TO 2337
21900	C  READS A LINE.  IF END OF FILE, JUMPS.
22000	444	IF(LN.NE.0)REREAD 107,K,IPT(KZY,1)
22100		IF(LN.EQ.0)REREAD 8001,IPT(KZY,1)
22200		P(KZY)=980000.
22300		GO TO 2308
22400	C   CAN'T USE 'TAP' OR 'RTAP' WITH INST KZY IF USING 'CONDUCT'.
22500	C  'REP'
22600	2703	ML=ML+1
22700		VX1=0
22800		VX2=0
22900		VX3=0
23000		IF(N.EQ.IXX)GO TO 2704
23100		INP(ML)=IBLA
23200		INP(ML+1)=IBLA
23300	C  WIPES OUT 'EP' IN 'REP'
23400	2704	CALL SCANR
23500	 	V(IJ)=3.
23600		V(IJ+1)=-66.0
23700		IF(VX1.EQ.32.)VX1=1.
23800		IF(VX1.EQ.0)VX1=LPAR
23900		IF(VX2.EQ.0)VX2=LK-1
24000		V(IJ+2)=VX1+VX2*10000.
24100		KL=VX2
24200		IF(DUR(LK).LT.0)DUR(LK)=DUR(KL)
24300		IF(VX3.EQ.0)GO TO 4773
24400		L=VX3
24500		ML=LK+1
24600		DO 1018 KL=ML,L
24700		IF(LPAR.GT.NP(KL).AND.LPAR.LT.31)NP(KL)=LPAR
24800		IF(DUR(KL))DUR(KL)=DUR(LK)
24900	C  TO SET DUR WHEN DUPLICATING NOTES THAT END WITH 'END;;'
25000		V(I)=V(I-4)+10000.
25100		V(I+1)=3.
25200		V(I+2)=-66.
25300		V(I+3)=V(I-1)
25400	1018	I=I+4
25500		GO TO 4773
25600	
25700	2018	IF(DF.EQ.0)GO TO 20181
25800	C NEXT FOR Pn SUBR/ I.E. NOTHING BUT P AND SUB CALL. 7/73
25900		V(IJ+1)=-201.
26000		V(IJ+2)=1.
26100		V(IJ+3)=0
26200		GO TO 7703
26300	20181	V(IJ)=3.
26400		V(IJ+1)=-66.
26500		V(IJ+2)=NW+LK*10000
26600		GO TO 4773
26700	C  READS /P5  .3 "ABC" .7 "XYZ"/
26800	
26900	8 	V(IJ+1)=-77.+DF
27000	C  DF HAS SUBR CALL INFO
27100		I=I+1
27200		VX(JJ-1)=1
27300	C  FOR RAND. SINGLE LITS.
27400		DO 3722 K=1,JJ,2
27500		V(I)=VX(K)
27600	3722	I=I+1
27700		V(IJ+2)=JJ/2
27800		V(IJ+3)=I
27900		DO 4722 K=2,JJ,2
28000		KN=I
28100		I=I+1
28200		L=VX(K)
28300		DO 6722 KL=L,72
28400		IF(INP(KL).EQ.IQT)GO TO 4722
28500		IV(I)=INP(KL)
28600	6722	I=I+1
28700	4722	V(KN)=I-KN-1
28800		V(IJ)=(I-IJ)*ALL
28900		GO TO 4773
29000	2720	QTS=0
29100		ISUB=104
29200		GO TO 1299
29300	
29400	104	DO 6721 K=ML,72
29500		JC=K+1
29600		IF(INP(K).EQ.IQT)GO TO 7721
29700	6721	IF(INP(K).EQ.KSLA.OR.INP(K).EQ.ISEMI)GO TO 7232
29800	C  FOR REPEAT OF ITEM BY SLASH
29900	CC7232	DO 7231 K=I-1,1,-1
30000	CC CHNGD 6/74	IF(ABS(V(K)).GT.72.)GO TO 7231
30100	CC	NL=V(K)
30200	CC	DO 7230 KL=K,K+NL
30300	7232	DO 7230 KL=ILIT,ILIT+NLIT
30400		V(I)=V(KL)
30500	7230	I=I+1
30600		GO TO 27222
30700	7231	CONTINUE
30800	
30900	5720	IAMP=-1
31000		JC=ML+1
31100	C  FOR SINGLE 'LIT' ITEMS.
31200	7721	DO 1722 KL=JC+1,72
31300		IF(INP(KL).NE.IQT)GO TO 1722
31400		JD=KL-1
31500		ML=KL+1
31600		NLIT=KL-JC
31700	C   EXTENT OF LIT ITEM IS FOUND
31800		GO TO 8721
31900	1722	CONTINUE
32000	C  CAN'T USE SLASH FOR REPEAT AFTER @Q
32100	8721	V(I)=NLIT
32200		ILIT=I
32300		DO 9721 K=JC,JD
32400	C   PUTS ITEM IN "IV" ARRAY
32500		I=I+1
32600	9721	IV(I)=INP(K)
32700		I=I+1
32800	27222	IF(IAMP.EQ.0)GO TO 1299
32900	2722	V(I)=999.
33000		QTS=-1.
33100	27221	V(IJ+1)=-88.+DF
33200		V(IJ)=(I-IJ+1)*ALL
33300		IJ=IJ+2
33400		V(IJ)=IJ+1
33500		I=I+1
33600		ISUB=1
33700		GO TO 1299
33800	
33900	7720	V(I)=LK
34000		V(I+1)=3.
34100		V(I+2)=-67.
34200		ML=ML+4
34300		CALL SCANR
34400	 	V(I+3)=VX1
34500		I=I+4
34600		L=VX1
34700		IF(NP(LK).LT.NP(L))NP(LK)=NP(L)
34800		IF(DUR(LK).LT.0)DUR(LK)=DUR(L)
34900		GO TO 4773
35000	C   TYPE 'DUPL N;'   N=INST # TO BE DUPLICATED.
35100	142	FORMAT(I,15A5) 
35200	1301	FORMAT(15A5) 
35300	2773	FORMAT(I,A5,72A1) 
35400	2114  FORMAT(I,72A1)
35500	300	FORMAT(I,3F,A1)
35600	301	FORMAT(3F,A1)
35700	6 	KB=KB+1
35800		IF(JED.GT.0)JED=0
35900		IF(J.EQ.'INSER')GO TO 1340
36000	      OTH(KB,1)=VX1*100000.+VX2*100.+VX3   
36100	      GO TO 340   
36200	1340	X=VX1
36300		IF(VX2.NE.0)X=1000000.+VX1*100000.+VX2    
36400		OTH(KB,1)=X
36500		GO TO 1338
36600	C   ABOVE IS TO PUT INSERT AFTER NOTE # OF A PARTICULAR
36700	C   INSTRUMENT.  FOR COMMENT AT START, SET BG TIME TO 1,1 
36800	C   - BEGIN LINE WITH  <,END WITH ; 
36900	C   UP TO 75 CHARACTERS MAY BE TYPED.     
37000	340      IF(VX3.NE.2)GO TO 1338 
37100		IF(ITYP.GE.0)GO TO 449
37200	CC	JREAD=5
37300	CC 6/74  COLGATE	GO TO 4400
37400		IF(READER(JNP))GO TO 2337
37500	C  READS A LINE.  IF END OF FILE, JUMPS.
37600	445	OTH(KB,3)=1.
37700		IF(LN.EQ.0)GO TO 447
37800		REREAD 300,K,OTH(KB,2)
37900		GO TO 1447
38000	447	REREAD 301,OTH(KB,2)
38100	1447	IF(JED)GO TO 2308
38200	3445	TYPE TEDIT
38300		ACCEPT 77732,K
38400		IF(K.EQ.'G')JED=-1
38500		IF(J.EQ.'INSER')GO TO 3446
38600		IF(K.NE.'Y'.OR.JED)GO TO 2308
38700	449	TYPE TPALN
38800		ACCEPT 301,OTH(KB,2)
38900		IF(JED)WRITE(21,301) OTH(KB,2)
39000		GO TO 2308
39100	
39200	1338	IF(ITYP.GE.0)GO TO 1449
39300	CC	JREAD=6
39400	CC 6/74 COLGATE	GO TO 4400
39500		IF(READER(JNP))GO TO 2337
39600	C  READS A LINE.  IF END OF FILE, JUMPS.
39700	446	IF(LN.EQ.0)GO TO 448
39800		REREAD 142,K,(OTH(KB,JD),JD=2,16)    
39900		GO TO 1446
40000	448	REREAD 1301,(OTH(KB,JD),JD=2,16)    
40100	1446	IF(JED)2446,3445,2446
40200	3446	IF(K.NE.'Y'.OR.JED)GO TO 2446
40300	1449	TYPE TPALN
40400		ACCEPT 1301,(OTH(KB,JD),JD=2,16)
40500		IF(JED)WRITE(21,1301)(OTH(KB,JD),JD=2,16)
40600	2446	X=OTH(KB,2)
40700		IF(J.EQ.'INSER'.AND.VX3.NE.0.AND.X.NE.'*')GO TO 6
40800		IF(X.EQ.'*')KB=KB-1
40900	C   ALLOWS SEVERAL LINES OF 'INSERT' IF ANY 3RD #.
41000	C   LAST LINE HAS '*' IN COLUMN 1.
41100		GO TO 2308
41200	C   IF NO PARAM NUM IS GIVEN, ALL PARAMS MUST BE TYPED.
41300	C   INSERT MAY INCLUDE 10 CHARS(P3-P30),
41400	C   P2, A # ONLY.  IF MORE THAN 1 PARAM IS TO BE EDITED AND
41500	C   P2 IS ONE OF THEM, FIRST EDIT P2 TO DESIRED VALUE,
41600	C   CHANGE P2 TO MINUS = THEN INSERT ENTIRE NOTE TO PLAY
41700	C   JUST AFTER ORIGINAL NOTE(WHICH WILL BE A REST).
41800	C   BX=INST N. Y=NOTE N. Z=PARAM N. 
41900	1899	CALL SCANR
42000		GO TO(1,2,3,4,5,6),ISUB
     

00100	1106	KTMP=1
00200		TP=60.
00300		IAMP=0
00400		BW=BY
00500		ITMP=-1
00600		ISUB=5
00700		JA=-1
00800		GO TO 2016
00900	3019	V(I)=990000.00
01000		V(I+1)=4.
01100		V(I+2)=VX1
01200		V(I+3)=VX2/TP
01300		V(I+4)=VX3/TP
01400		I=I+5
01500		BY=BW
01600	C  SEPT 18, 70
01700		IF(VX1.EQ.0)GO TO 2308
01800		BW=BW+VX1
01900		V(I)=-9900.-BW
02000		I=I+1
02100		CALL BGSORT(BW)
02200	9003	IF(IAMP)GO TO 4003
02300	2016	VX3=0
02400		VX2=0
02500		GO TO 1299
02600	5	IF(VX2.NE.0)GO TO 105
02700	C  'TEMPO/120*;'  OR  'TEMPO/1.5 72*;'  IS OK.
02800		VX2=VX1
02900		VX1=0
03000	105	IF(VX3.EQ.0)VX3=VX2
03100		IF(VX2.LT.11.)TP=1.
03200		IF(J.EQ.ITMPO)GO TO 3019
03300	  	PCH(1,KTMP)=VX1
03400		PCH(2,KTMP)=VX2
03500		PCH(3,KTMP)=VX3
03600	C   PCH(1)=TIME  (2)=MM1  (3)=MM2
03700		KTMP=KTMP+1
03800		IF(IAMP.EQ.0)GO TO 2016
03900	4003	VX1=0
04000		IAMP=0
04100		VX2=VX3
04200		IF(J.EQ.ITMPO)GO TO 3019
04300		PCH(1,KTMP)=0
04400		PCH(2,KTMP)=VX2
04500		PCH(3,KTMP)=VX2
04600	C   MM CAN BE FROM 11 UP  ITMPO FACTOR FROM 10 DOWN.  
04700	C   UP TO 30 ITMPO CHANGES MAY BE MADE.   
04800	
04900	1016      IA=I    
05000	      IZ=1  
05100	3100	V(I-2)=CODE+DF
05200	      ISUB=3     
05300	5016	IF(IAMP.GE.0)GO TO 1299
05400	117	IF(IZ-2)3013,9004,9004
05500	103	K=INP(ML)
05600		IF(K.EQ.ITT)GO TO 1106
05700		IF(K.EQ.ISEMI)GO TO 1014
05800		IF(K.NE.IBLA) GO TO 1899
05900		ML=ML+1
06000		GO TO 103
06100	3      IF(VX1.EQ.-99.)GO TO 4022
06200		IF(CODE.EQ.-22.)GO TO 2017
06300	  	IF(CODE.LT.-23.OR.IZ/2*2.EQ.IZ)GO TO 17
06400	C    CHECKS PAIRS OF NUMBERS FOR 'RTAP'
06500	2017	IF(VX1.EQ.10000.)GO TO 17
06600	      VX1=4./VX1
06700		IF(JJ.NE.1)GO TO 2014
06800		V(I)=VX1
06900		GO TO 114
07000	
07100	1217	IF(VX1.EQ.10000.)GO TO 114
07200	C    FOR "FINE" IN LIST
07300	      V(I+1)=VX2
07400	      IF(CODE.EQ.-36.)CALL RANR(V,I)
07500	2217	I=I+1
07600	C  SETS UP STRING OF RAND SELECTIONS
07700		GO TO 114
07800	3217	V(I)=V(I-2)
07900		V(I+1)=RB
08000	C  FOR SLASH REPTS OF RAND SELEC UNITS. ("REP" CAN'T BE USED!)
08100		GO TO 2217
08200	C******** PUT IN ERROR TRAP FOR "REP" ETC. ******
08300	
08400	2014	DO 9006 L=2,JJ
08500		IF(VX(L).EQ.0)GO TO 17
08600	9006	VX1=4./VX(L)+VX1
08700		JJ=1
08800	17	V(I)=VX1
08900		IF(CODE.EQ.-46..OR.CODE.EQ.-36.)GO TO 1217
08950		IF(CODE.EQ.-35.AND.VX1.GT.15)GO TO 99
08975	C  FINDS F NUM.>15!
09000	C  JUMP IF STRING OF RAND SELECS.
09100		IF(JJ.EQ.1)GO TO 114
09200		L=VX(JJ)-1
09300		X=V(I)
09400		NL=I+1
09500		I=L+I
09600		DO 1017 K=NL,I
09700	1017	V(K)=X
09800	C   ADDS UP TOTAL   OF NOTES IN SEQ.
09900		IZ=IZ+L
10000		GO TO 114
10100	1014	IF(CODE.EQ.-46..OR.CODE.EQ.-36.)GO TO 3217
10200		V(I)=RB
10300	C   RB SAVES IT FOR SLASH REPEAT
10400	114      RB=V(I)     
10500	      I=I+1 
10600	      IZ=IZ+1     
10700	      GO TO 5016    
10800	4022      JC=VX2+.3
10900	      JD=VX3-.5
11000		IF(JJ.EQ.2)JD=1
11100	C********* MAY 19,71   ----MANY LINES ABOVE.
11200	      IZ=IZ+JC*JD 
11300	C   JC=HOW MANY TIMES,  JD=HOW MANY NOTES 
11400	      DO 1005 K=1,JD    
11500	       NL=I+JC-1  
11600	      DO 2005 L=I,NL    
11700	2005  V(L)=V(L-JC)
11800	1005      I=I+JC  
11900		RB=V(NL)
12000	C  RB SAVES DATA FOR SLASH REPEAT FEATURE.
12100	      GO TO 5016  
12200	
12300	9004	IF(ITMP.EQ.0)GO TO 3013
12400	C*********** JUNE 1,71
12500		IZ=IZ-1
12600	C***** JAN. 1974
12700	      KA=1  
12800	      IC=1  
12900	      K=0   
13000		J=1
13100	      Z=0   
13200	      RC=0  
13300	9007	Y=PCH(3,IC)/TP
13400		X=PCH(2,IC)/TP
13500	      Z=PCH(1,IC) 
13600		CALL SQYY(YY,X,Y,Z)
13700		XT(1)=X
13800	      XA=RA 
13900	      RD=1  
14000	      RB=0  
14100	      ZZ=Z  
14200	7020      RA=V(IA+K)    
14300		IF(RA.EQ.10000.)GO TO 3013
14400	4020  RD=1  
14500	      IF(RA.LT.0)RD=-1. 
14600	      RA=RA*RD    
14700	      IF(KA.EQ.0)RA=RA-RC     
14800	      W=RA  
14900	      RB=W  
15000	      IF(W.LE.Z)GO TO 2020    
15100	      IF(Z.NE.0)GO TO 3020    
15200	      RA=RA/Y     
15300	      RB=-1.
15400	      RC=0  
15500	      GO TO 8020  
15600	3020      W=Z     
15700	      RC=W+RC     
15800	      GO TO 24    
15900	2020      RC=0    
16000	24	IF(X.NE.Y)GO TO 424
16100		RA=W/X
16200		GO TO 8020
16300	C   DUR OF TMP + BG TIME OF TMP - NOTE VALUE - 
16400	C   BG TIME OF NOTE. CHN=TBG.
16500	424	RAX=XT(J)
16600		RA=(-2.*RAX+(4.*RAX**2+8.*YY*W)**.5)/(2.*YY)
16700		XT(J)=RAX+YY*RA
16800	8020      IF(KA.EQ.0)RA=RA+XA 
16900	      KA=1  
17000	      IF(RC.NE.0)GO TO 1011   
17100	      IF(T5.EQ.1)GO TO 8203   
17200	      V(IA+K)=RA*RD     
17300	      IF(K.EQ.IZ)GO TO 3013     
17400	C*********** JUNE 1,71
17500	1011      IF(T5.EQ.1)GO TO 2011     
17600	      K=K+1 
17700	      IF(ZZ.NE.0)Z=Z-W  
17800	      IF((Z.GT.0).OR.(RB.EQ.-1.))GO TO 7020     
17900	      IC=IC+1     
18000	      IF(RB.EQ.W)GO TO 9007
18100	      KA=0  
18200	      K=K-1 
18300	      GO TO 9007     
18400	C********* MAY 13,71  OMITS REPEATED RHY. FEATURE.
18500	C     ML=I-1
18600	3013	X=I-IJ
18700		V(IJ+2)=X-3.
18800		V(IJ)=X*ALL
18900		IF(CODE.NE.-35)GO TO 4773
19000		M=IJ+3
19100	C   SETS NUMBERS FOR FUNCS.
19200		DO 313 K=M,I-1
19300	313	IF(V(K).LT.85.)V(K)=V(K)+85.
19400		GO TO 4773
19500	
19600	2011      XA=RA   
19700		IF(K.GT.1)GO TO 9020
19800		K=I-6
19900	      ZPAR=-9900.-CHN-ZZ
20000	      DO 3011 KL=8,I     
20100	      IF((V(K).EQ.ZPAR).AND.(V(K+1).EQ.990000.))GO TO 9020    
20200	3011      K=K-1
20300	9020      W=ZZ  
20400		IF(V(K+3))K=K+3
20500	C   ABOVE IS FOR TYPED IN TEMPO CHANGES
20600		KA=K+3
20700	      ZZ=V(KA)
20800	C   DUR OF NEXT TEMPI
20900		X=V(KA+1)
21000		Y=V(KA+2)
21100	213      KA=0  
21200	      Z=ZZ  
21300		CALL SQYY(YY,X,Y,Z)
21400	      CHN=CHN+W   
21500		XT(J)=X
21600	      IF(KA.EQ.1)Z=0    
21700	      RA=PR 
21800		KA=0
21900		K=K+3
22000		GO TO 4020
     

00100	2337	T=0
00200		DO 1107 K=1,30
00300	1107	PL(K)=1.
00400	C  2/74--WAS AT 17300/1   SETS DEFAULT OUTPUT MODE TO 1.
00500		IF(ITYP)GO TO 23371
00600		END FILE 21
00700		DATA ENFI /25H(' INPUT ON FOR21.DAT '/)/
00800		TYPE ENFI
00900	C**** NOT THIS *****  PUTS AWAY TYPED IN DATA. TO REUSE, EDIT FOR21.DAT.
00910	C  PUTS AWAY TYPED IN DATA. TO REUSE, EDIT SCORX
01000	23371	IF(SOS)WRITE(JOUT,902)
01100	C   WRITES A BLANK LINE
01200		NWZZ=0
01300		IAMP=0
01400		IT3=0
01500		K=1
01600	      IX=0  
01700		BG(NINS+1)=19999.
01800	4011	IF(CNT(K))GO TO 5011
01900	6011	IF(K.EQ.KZY)GO TO 4337
02000		K=K+1
02100		GO TO 4011
02200	5011	L=V(I-1)/(-9900.)
02300		IF(L.EQ.1)I=I-1
02400		V(I)=CNT(K)
02500		V(I+1)=P(K)
02600		V(I+3)=-44.
02700		I=I+5
02800		IF(P(K).EQ.980000.)I=I-4
02900		KL=I
03000		REWIND 1
03100		ICT=IPT(K,1)
03200		CALL IFILE(1,ICT)
03300	9011	L=I+6
03400		READ(1,7011)(V(M),M=I,L)
03500	C   READS "CONDUCT" AND "RHYTHM" (TAP) DATA.
03600		IF(V(L).EQ.999.)GO TO 8011
03700		I=L+1
03800		GO TO 9011
03900	8011	IF(P(K).NE.980000.)GO TO 6337
04000		DO 7337 K=L,I,-1
04100	7337	IF(V(K).NE.999.)GO TO 8337
04200	8337	I=K-1
04300		V(I)=0
04400		V(I+1)=V(K)
04500		V(I+2)=V(K)
04600	C   K WAS I-1 ABOVE.
04700		I=I+3
04800		V(KL+1)=I-KL-1
04900	C  ABOVE RESETS WORDCOUNT FOR 'CONDUCT' DATA.
05000		GO TO 4337
05100	6337	DO 5337 M=I,L
05200		KN=M
05300	5337	IF(V(M).EQ.999.)GO TO 3337
05400	3337	I=KN
05500		KN=I-KL
05600		V(KL-1)=KN
05700		V(KL-3)=KN+3
05800		GO TO 6011
05900	7011	FORMAT(7F)
06000	4337	IF(V(I-1).EQ.-9900.-BY)I=I-1
06100		V(I)=-19899.
06200	      PP1=0
06300	      T6=10000.   
06400	      DO 2118 K=1,NINS  
06500		ROFF(K)=0
06600	C********* FEB 17,71
06700		M=NP(K)
06800	      IT(K)=0 
06900		IPT(K,31)=0
07000		NCNT(K,31)=1
07100		DO 2118 L=1,M
07200		NCNT(K,L)=1
07300	2118	IPT(K,L)=0
07400		DO 5013 K=1,IXIN
07500	5013	X=RAND(0.0,0.0)
07600		REWIND 1
07700		IF(MX)CALL OFILE(1,ISLAC)
07800	      NW=1    
07900		NWX=0
08000	      TDUR=0
08100		A=0
08200	      T2=1. 
08300	      T4=1. 
08400	      T5=0  
08500		J=1
08600	      MK=0  
08700	C   IS THE ABOVE NEEDED?
08800		IF(MX.NE.3)GO TO 40021
08900		K=4
09000	10023	N=AMOD(V(K),100.0)/-11.
09100	C  AMOD NEEDED BECAUSE CODE # MAY HAVE -100 FOR DF OR -200 FOR SUBR.
09200		IF((N.NE.2.AND.N.NE.3.AND.N.NE.4).OR
09300		1 .V(K-2).LT.10000.)GO TO 10021
09400		J=V(K+1)
09500		IF(J.EQ.1)GO TO 10024
09600		IF(N.EQ.3.AND.V(K+J+1).EQ.101.)J=J-1
09700		N=V(K-2)
09800		L=N/10000
09900		M=N-L*10000
10000		TYPE 10022,INST(L),M,J
10100	10024	K=K+ABS(V(K-1))
10200	10021	K=K+1
10300		IF(K.LT.I)GO TO 10023
10400	40021	IF(MZ.NE.-4)GO TO 1002
10500		N=1
10600	40022	K=N+1
10700		IF(N.GT.I)CALL EXIT
10800		X=V(N)
10900		IF(X.EQ.-199..OR.X.EQ.-99.)GO TO 40024
11000		IF(X.GE.0)GO TO 40023
11100		PRINT 4002,X
11200		N=N+1
11300		GO TO 40022
11400	40024	J=N+1
11500		GO TO 40025
11600	C  FOR 'SECTIONS'
11700	40023	J=ABS(V(K))+K-1
11800	40025	PRINT 4002,(V(K),K=N,J)
11900		N=J+1
12000		GO TO 40022
12100	10022	FORMAT(1XA5,' P',I2,'  HAS ',I3,' ITEMS.')
12200	4002  FORMAT(10F12.3)
12300	1002	IF(IDALL)GO TO 600
12400		X=DUR(IDALL)
12500		DO 2002 K=1,NINS
12600	2002	IF(DUR(K))DUR(K)=X
     

00100	C ***** SORTER *************************  
00200	C  *******  OUTPUT LOOP FROM HERE ON  ********
00300	600      IL=0     
00400	C********** BELOW IS FOR 'SECTIONS'
00500		KODE=0
00600		NWX=NWX+1
00700	      MK=MK+1     
00800	      Y=BNW(NW)   
00900	723      IL=IL+1  
01000	3723      Z=V(IL)     
01100	      IF(Z.EQ.-19899.)GO TO 732
01200	      IF(Z.NE.-9900.-Y)GO TO 723     
01300	C********** BELOW IS FOR 'SECTIONS'
01400		IF(V(IL-2).EQ.-199.)KODE=IV(IL-1)
01500	2723      IL=IL+1   
01600	729	K=IL+2
01700		MOT=V(IL+1)
01800		RD=V(K)
01900		IF(RD.EQ.-67.)GO TO 3726
02000		RB=V(IL)
02100	C************ DOWN TO 4150 IS FOR 'SECTIONS'
02200		IF(RB.NE.-99.)GO TO 4150
02300		KODE=IV(K-1)
02400	2160	IF(KODE.EQ.0)GO TO 723
02500	  	IF(MZ)WRITE(JOUT,9150),KODE
02600		KL=Y/10000.
02700		RB=Y+KL*10000.
02800		DO 5150 KL=1,I
02900		IF(V(KL).NE.-199..OR.IV(KL+1).NE.KODE)GO TO 5150
03000		IV(K-1)=0
03100	C  WHEN 'PLAY' HAS BEEN FOUND, INDENTIFIER CHNGED TO 0
03200		RD=V(KL+2)+9900.
03300		DO 6150 L=KL+2,I
03400		M=V(L)/(-9900.)
03500		IF(M.NE.1)GO TO 6150
03600		RA=RB+RD-V(L)-9900.
03700		V(L)=-9900.-RA
03800	C  UPDATES BG TIMES INSIDE SECTION.
03900		CALL BGSORT(RA)
04000	C7150	IF(RA.EQ.BNW(KA))GO TO 6150
04100	C  UPDATES LIST OF CHANGE TIMES.
04200	6150	IF(V(L).EQ.-299.)GO TO 160
04300	5150	CONTINUE
04400	160	IL=1
04500		GO TO 3723
04600	C***********  ABOVE IS FOR 'SECTION' REPEATS
04700	4150	LK=RB/10000.+.2
04800		IF(LK.GE.98)GO TO 7700
04900		LP=RB-LK*10000
05000	C   LK=INST #   LP=PARAM #
05100		LN=IPT(LK,LP)
05200		IPT(LK,LP)=IL+2
05300		IF(RD.EQ.-66.)GO TO 726
05400		IF(RD.EQ.-55..OR.RD.EQ.-56.)GO TO 1726
05500		IF(RD.EQ.-23)GO TO 6700
05600	
05700	2727	ML=IPT(LK,LP)
05800		IF(MOT.GT.0)GO TO 3727
05900	C  USE NEG WDCNT FOR 'ALL'
06000		DO 4727 KL=LK+1,NINS
06100		IF(NP(KL).LT.LP.AND.LP.LT.31)NP(KL)=LP
06200		IPT(KL,LP)=-(LK+(LP-1)*KZY)
06300		NCNT(KL,LP)=10000
06400	4727	IF(DUR(KL))DUR(KL)=1000.
06500	C  ASSUMES THAT DURATIONS ARE SET IN 'NOTES'.
06600	C  AFTER 'ALL' IS USED ONCE IT WORKS LIKE DUPL OR REP.
06700		GO TO 727
06800	C 'MOVE' WITH 'ALL' KEEPS ORIGINAL TIME DATA REGARDLESS OF BG TIMES.
06900	3727	IF(V(IL).NE.V(LN-1).OR.LN.EQ.0)GO TO 727
07000		DO 1727 L=1,NINS
07100		DO 1727 KL=1,NP(L)
07200		IF(LN.NE.IPT(L,KL))GO TO 1727
07300		NCNT(L,KL)=10000
07400	C ******* JAN 29,70
07500		IPT(L,KL)=ML
07600	C RESETS POINTERS FOR DUPL AND REP INSTS.
07700	C *** 'ALL' WILL NOT WORK WITH RAN TF.!!!!!*******FEB 21,73
07800	1727	CONTINUE
07900	727	NCNT(LK,LP)=10000
08000	C******** MAY 13,71 RHY REP. FEATURE OMITTED.
08100	2150	IF(MOT)MOT=-MOT
08200		IL=IL+MOT+1
08300	3150	IF(V(IL))GO TO 3723
08400		GO TO 729
08500	726	RB=V(IL+3)
08600		K=RB/10000.
08700		L=RB-K*10000
08800		IPT(LK,LP)=-(K+(L-1)*KZY)
08900		GO TO 2727
09000	3726	LK=V(IL)
09100		M=V(K+1)
09200		KL=NP(M)
09300		DO 4726 L=1,KL
09400		IPT(LK,L)=IPT(M,L)
09500		IF(IPT(M,L).NE.0)NCNT(LK,L)=10000
09600	C****** JUN 29 71  (LK,L) WAS (L,K)....???????
09700	4726	CONTINUE
09800		IPT(LK,31)=IPT(M,31)
09900		K=0
10000		GO TO 2150
10100	C   ABOVE IS FOR DUPLICATION ROUTINE   NEXT ADJUSTS TIMES FOR 'RTAP'
10200	6700	KL=IL+V(IL+1)+1.3
10300		RC=V(K-2)
10400	1770	IF(V(KL))GO TO 700
10500	2700	KL=KL+V(KL+1)+1.3
10600		GO TO 1770
10700	700	KL=KL+1
10800		IF(Z.NE.V(KL-1).OR.V(KL).NE.RC)GO TO 2700
10900		KL=KL+3
11000		KN=IL+3
11100		LN=V(KN)+.3
11200		DO 3700 L=1,LN,2
11300		RA=V(L+KN)
11400		KA=V(L+KN+1)+.3
11500		RB=0
11600		DO 4700 LP=1,KA
11700	4700	RB=RB+V(KL+LP)
11800		DO 5700 LP=1,KA
11900	5700	V(KL+LP)=V(KL+LP)/RB*RA
12000		V(KL+KA)=V(KL+KA)+.00030
12100	3700	KL=KL+KA
12200		GO TO 2150
12300	
12400	C  BELOW FOR 'TEMPO' SETUP
12500	7700	T2=V(IL+4)
12600		T1=V(IL+3)
12700		TBG=Y
12800		TDUR=V(IL+2)
12900		CALL SQYY(AC,T1,T2,TDUR)
13000	8700	IF(TDUR.EQ.0)TDUR=10000.
13100		T5=1.
13200		T6=TBG+TDUR
13300		IT3=1.
13400		IF(LK.EQ.98)IT3=IL+2
13500		T4=1.
13600		GO TO 2150
13700	C*************** ANY WDCNTS DOWN FROM HERE. *********
13800	C   NEXT ADJUSTS 'MOVE' TIMES IF BG IS AT A NOTE NUMBER.
13900	1726	IF(V(IL-1).GT.-19000.)GO TO 2727
14000		RA=BT
14100		K=IL-1
14200	2726	V(K)=-9900.-RA
14300		ISUB=-1
14400		L=K+5
14500		RB=V(L)+V(L-1)
14600		V(L-1)=RA
14700		K=K+V(K+2)+2
14800		IF(V(K).GT.-19000..OR.V(K+1).NE.V(IL).OR.
14900		1 V(K).NE.-9900.-RB)GO TO 2727
15000		RA=RA+V(L)
15100		CALL BGSORT(RA)
15200		GO TO 2726
15300	C  CONVERTS BG TIME OF NOTE NUM TO REAL TIME.  DOESN'T WORK WITH -66!
15400	C   NOW WE BEGIN ON!! NOTE NUM. NOT AFTER NOTE NUM.
15500	732	DO 2606 K=NW,NWZ
15600	2606	BNW(K)=BNW(K+1)
15700		NWZ=NWZ-1
15800		IF(NWZ.EQ.0)GO TO 2111
15900		IF(NWZZ.EQ.1)GO TO 5111
16000		NWZZ=1
16100		IF(NWZ.EQ.1)GO TO 1111
16200		DO 3111 K=1,NWZ
16300		IF(BNW(K).LT.1000.)GO TO 3111
16400		X=BNW(NWZZ)
16500		BNW(NWZZ)=BNW(K)
16600		BNW(K)=X
16700		NWZZ=NWZZ+1
16800	3111	CONTINUE
16900	5111	IF(NWZZ.EQ.NWZ)GO TO 1111
17000		L=NWZZ+1
17100		X=BNW(NWZZ)
17200		DO 4111 K=L,NWZ
17300		IF(BNW(K).GT.X)GO TO 4111
17400		RA=BNW(K)
17500		BNW(K)=X
17600		X=RA
17700	4111	CONTINUE
17800		BNW(NWZZ)=X
17900		GO TO 1111
18000	111      FORMAT(1XA5,'.DAT',12X,'EDIT FILE NAME=',A5,8X,
18100		1'V ARRAY=',I4,'/2000',/' TEMPO FACTOR=',F6.2,4X,
18200		1'RANDOM NUMBER =',I6/)
18310	1023	FORMAT(/'  <  ',A5,'.DAT '/1XA5)
18400	C********** BELOW IS FOR 'SECTIONS'
18500	9150	FORMAT(/3X'******* SECTION ',A1)
18600	2111	NWZ=-1
18700	C  ABOVE ORDERS BNW DATA TO SAVE TIME AT 1108 ON PG5.
18800	1111	IF(MZ.EQ.0)GO TO 1601
18900	      IF(NWX.NE.1)GO TO 1486
19010	      WRITE(JOUT,111)ISLAC,IFLNM,I,TF,IXIN
19100	C*********** JUNE 1,71
19200	C********** BELOW IS FOR 'SECTIONS'
19300	1486	IF(KODE.NE.0)WRITE(JOUT,9150),KODE
19400		K=NWX-1
19500	C*********** JUNE 1,71
19600	          IF(NWX.GT.1.AND.IT(J).NE.-3)WRITE(JOUT,3154),K,Y  
19700		IF(IT(J).EQ.-3)WRITE(JOUT,5154),K,BX,INST(J) 
19800	C*********** JUNE 1,71    X 3     K'S
19900	
20000	      DO 602 K=1,NINS   
20100	48	LK=INST(K)
20200	C*********** JUNE 1,71
20300	  	IF(NCNT(K,31).NE.10000.AND.NWX.GT.1)GO TO 602
20400		NCNT(K,31)=1
20500		IJ=IPT(K,31)
20600		X=0
20700		IF(IJ.NE.0)X=V(IJ+2)
20800	      WRITE(JOUT,5396),LK,X
20900		X=DUR(K)
21000	      IF(X.GT.10000.)GO TO 83 
21100	      WRITE(JOUT,8396),X     
21200		GO TO 602
21300	5396      FORMAT(5XA5,'  RANDOM TF =',F4.2,10X,'DURATION =',$) 
21400	7396      FORMAT('+',F5.0,' NOTES')    
21500	8396      FORMAT('+',F6.2,'"')   
21600	83      X=X-10000.
21700	      WRITE(JOUT,7396),X    
21800	602	CONTINUE
21900	715	IF(IT3.NE.1.)GO TO 1602
22000		RA=T1*TP
22100		RB=T2*TP
22200	      WRITE(JOUT,6154),RA,RB,TDUR  
22300	      IT3=0  
22400	1602	IF(NWX.EQ.1)GO TO 315
22500	      IF(IT(J).EQ.-3)GO TO 1108
22600	C*********** JUNE 1,71
22700	6154      FORMAT(' TMP=',F7.3,' TO',F8.3,' DURING',F6.2,' SECS.'/)
22800	7154	FORMAT(' ''CONDUCT'' FILE NAME = ',A5/)
22900	5154      FORMAT(/' << CHANGE',I3,' BEGINS ON NOTE',F5.0,1XA5,' >>'/)
23000	902      FORMAT(1XA5/)  
23100	3154      FORMAT(/' <<   BASIC TIME OF CHANGE',I3,' IS',F8.3,'" >>'/)
23200	4154      FORMAT(' THE FIRST',F9.4,'" ARE OMITTED'/)  
23300	C*********** JUNE 1,71
23400		IT(J)=IT(J)/10
23500		GO TO 1108
23600	315	IF(IT3.GT.1)WRITE(JOUT,7154),ICT
23700		IF(OP1.NE.0)WRITE(JOUT,4154),OP1 
23800	1601  IF(NWX.GT.1) GO TO 1108
23910		IF(MZ)WRITE(JOUT,1023),ISLAC,PLAY
24000		IF(TF.GT.10.)TF=TF/60.
24100		TF=1000./TF
24200		DO 6015 K=1,30
24300	6015	COPY(K)=-9900.
24400	C  INITS PARAM REPRESSION FEATURE.
24500	      IF(KB.EQ.0)GO TO 9926   
24600	      ML=NINS+1   
24700	      NL=NINS+KB
24800	      DO 9826 K=ML,NL   
24900	9826      BG(K)=OTH(K-NINS,1) 
25000	C   'OTH' INSERTS, WITH BG TIME IN SECONDS, CAN ONLY BE SET WITH TF=1   
25100	9926      DO 5015 K=1,NINS    
25200		IQ(K)=BG(K)*10000.
25300	      BG(K)=0
25400		INP(K)=0
25500	      P1(K)=0     
25600		IF(DUR(K).LT.10000.)DUR(K)=DUR(K)-.0001
25700	C******* FEB. 16,71   FOR ROUND-OFF NONSENSE
25800	5015      CNT(K)=0
25910		IF(MX)WRITE(1,1023)ISLAC,PLAY
26000	      BW=0 
26100		GO TO 500
     

00100	752      FORMAT(1X15A5)
00200	1108      M=0 
00300	      JC=0  
00400		IF(NWZ)GO TO 1740
00500	C  NWZZ IS SET AT 3111 IN SORTR.
00600		DO 740 K=1,NWZZ
00700	      X=BNW(K)    
00800		IF(X-.0001.GT.BT.OR.X.LE.BW.OR.BW)GO TO 2740
00900		IT(J)=IT(J)*10
01000	      NW=K  
01100	      GO TO 600   
01200	2740	IF(X.LT.1000..OR.X-J*10000.NE.CNT(J)+1.)GO TO 740
01300	      X=BT+PR     
01400	      NW=K  
01500		BX=CNT(J)+1.
01600	      IT(J)=-3    
01700	      GO TO 600   
01800	740      CONTINUE 
01900	      IT(J)=0     
02000	1740      IF(J.LE.NINS)GO TO 31   
02100	7021      K=J-NINS
02200	      IF(JC.GT.0)K=JC   
02300	5740      IF(PP1.LT.OP1)GO TO 1752 
02400	      IF(MZ)WRITE(JOUT,752),(OTH(K,L),L=2,16)    
02500	      IF(MX)WRITE(1,752)(OTH(K,L),L=2,16)     
02600	C   IF TF .NE.1, ALL  INSERT TIMES MUST BE RESET
02700	C   IF FIRST PART OF NOTE LIST IS 'OMITTED', CHECK YOUR  'INSERTS'.  
02800		DO 17521 L=3,30
02900	17521	COPY(L)=-9900.
03000	C  SO THAT ALL PARAMS WILL PRINT,AFTER AN INSERT.
03100	1752	BG(K+NINS)=19999.
03200		OTH(K,1)=19999.
03300	      IF(JC.GT.0)GO TO 21     
03400	31      KL=1
03500	      IF(KB.EQ.0)GO TO 2031   
03600	      DO 1031 L=1,KB    
03700		K=L
03800	      X=OTH(K,1)-1000000.     
03900	      M=X/100000. 
04000	      IF(M.NE.J.OR.IQ(J).NE.0)GO TO 1031   
04100	C   M=INST  
04200	      IF(X-M*100000.EQ.CNT(J)+1)GO TO 5740 
04300	1031	CONTINUE
04400		IF(J.GT.NINS)GO TO 500
04500	2031      CNT(J)=CNT(J)+1   
04600	      ICT=CNT(J)  
04700	C   INSERT TRAP HERE FOR OVERLAP OF RESTARTED INSTS.******
04800	      NPA=NP(J)   
04900	      PP1=P1(J)  
05000	      IF(BT.GE.DUR(J))GO TO 5174    
05100		IF(IQ(J).EQ.0)GO TO 200
05200		P2=-IQ(J)/10000.
05300		IQ(J)=0
05400		CNT(J)=-1
05500		ICT=-1
05600		GO TO 4203
05700	
05800	C   MK IS FLAG FOR RESTS
05900	200	MK=0
06000	      IF((BT.EQ.0.AND.J.EQ.1).OR.IPT(J,1).EQ.0)GO TO 203    
06100		KN=IPT(J,1)-1
06200		IF(KN.GT.0)GO TO 12033
06300	12032	KN=JPT(-KN)
06400		IF(KN)GO TO 12032
06500		KN=KN-1
06600	C  FOR 'ALL' IN P32.  FOLLOWS UP ON POINTERS TO POINTERS!
06700	C   SOMEDAY PUT P1(32) IN WITH OTHER PARAMS BELOW!!!!
06800	12033	IJ=V(KN)
06900		IF(ABS(V(KN)).EQ.4.)GO TO 1203
07000	C   'IABS' IS FOR -4 USED WITH 'ALL'
07100	  	Z=(BT+9900.+V(KN-2))/V(KN+2)
07200	C******* FEB 19,71
07300		IF(Z.GT.1.)Z=1.
07400		Y=V(KN+3)
07500		X=(V(KN+4)-Y)*Z+Y
07600	C******* FEB 19,71
07700		GO TO 204
07800	1203	X=V(KN+3)
07900	204	Y=RAND(0.0,1.0)
08000		IF(Y-X)MK=-1
08100	
08200	203	DF=1.
08300	C   DF=DUTY FACTOR 
08400		DO 2155 L=2,NPA
08500		ISUB=0
08600	C  WHY DOES ISUB APPEAR AT 14700/5?
08700		IDF=0 
08800	C    IDF IS DUTY FACTOR FLAG
08900		IJ=IPT(J,L)
09000	12031	IF(IJ)IJ=JPT(-IJ)
09100		IF(IJ)GO TO 12031
09200	C  FOLLOWS UP ON POINTERS TO POINTERS!
09300		PM=1.
09400		IF(IJ.GT.1)GO TO 2157
09500		P(L)=0
09600		GO TO 21551
09700	C 7/73
09800	2157	LN=IJ+2
09900		NM=ABS(V(IJ-1))+LN-4
10000		NL=V(IJ)
10100		IF(NL.GT.-200)GO TO 372
10200		ISUB=-1
10300		NL=NL+200
10400	C FOR SUBROUTINE FLAG
10500	372	IF(NL.GT.-100)GO TO 272
10600		IDF=-1
10700		NL=NL+100
10800	C  DEC.6,72  FINDS DUTY FACTOR PARAM
10900	272	VIJ2=V(IJ+1)
11000		KN=NL/(-11)
11100		IF(KN.EQ.0)GO TO 1100
11200		GO TO (61,62,62,62,65,65,67,68),KN
11300	1100	IF(VIJ2.EQ.1.)GO TO 1200
11400		ML=3
11500	1900	KA=1
11600		VX1=0
11700		DO 1156 K=LN,NM,ML
11800		VX(KA+1)=V(K)+VX(KA)
11900	1156	KA=KA+1
12000		X=RAND(0.0,1.)
12100		DO 1157 K=2,11
12200		IF(X.GT.VX(K))GO TO 1157
12300		KL=K-1
12400		IF(KN.EQ.7)GO TO 6157
12500		GO TO 1400
12600	1157	CONTINUE
12700	1400	LN=IJ+3*KL
12800	1462	RA=V(LN)
12900		IF(RA.EQ.10000.)GO TO 5174
13000	C   FOR "FINE" IN RLIST
13100		RB=V(LN+1)
13200		PAR=RAND(RA,RB)
13300	1300	IF(NL.NE.-1)PM=2.
13400	C  IF 2 THEN PRINTS A5
13500		GO TO 1155
13600	1200	PAR=V(IJ+2)
13700		GO TO 1300
13800	C   NEXT IS FOR SUBROUTINE AND QUAD CALLS
13900	61	IF(NL.LT.-12)GO TO 6100
14000	601	X=P2
14100	C  '.5' MAKES ALL SUBR PARAMS PRINTOUT.
14200		CALL SUBR
14400	CC 7/74 NOW SET DUR(J) =0 IN SUBR	IF(DF)GO TO 5174
14500	C* OUT--COLGATE  DF=-1 IN 'SUBR' WILL CAUSE 'END' FOR INST.
14600		IF(L.EQ.2)GO TO 4203
14700		IF(X.EQ.P2)GO TO 21552
14800		PP2=P2
14900		PR=P2
15000		GO TO 21552
15100	C  ABOVE IS FOR P2 CHANGES IN SUBROUTINE
15200	C  TF,TEMPO,CONDUCT WILL AFFECT P2 ONLY WHEN P2 CALLS THE SUBR.,
15300	C  ALL 'TEMPO' CHANGES WILL BE IGNORED!! (THEN DUR. IN SECS. MUST
15400	C  BE SET TO 'REAL TIME'.)
15500	
15600	C   NEXT IS FOR QUAD ROUTINES
15700	6100	CALL QUAD(NL)
15800		GO TO 21552
15900	
16000	C   FOLLOWING IS FOR STRINGS OF VALUES.  
16100	62      KL=NCNT(J,L)+1
16200		IF(KL.GT.VIJ2)KL=1 
16300		IF(NL.NE.-46.AND.NL.NE.-36)GO TO 162
16400	C   THIS PART FOR STRINGS OF RAND SELECTION
16500		LN=KL+IJ+1
16600		KL=KL+1
16700		IF(KL.GT.VIJ2)KL=1 
16800		NL=NL+45
16900	C   FOR NUMBERS ONLY SO FAR(THIS MAKES NL=-1.  FOR NOTES, =9)
17000	162	NCNT(J,L)=KL
17100		IF(NL.GT.-22)GO TO 1462
17200	C   JUMP RAND SELECTION
17300	      PAR=V(IJ+KL+1)
17400	C********** MAY 13,71 RHY REPEAT FEATURE OMITTED.
17500	C************************
17600		IF(KN.NE.3)GO TO 1155
17700	C*******JULY 16,71	IF(PAR.EQ.101.)GO TO 5174
17800		IF(PAR.EQ.10000.)GO TO 5174
17900		PM=2.
18000		IF(PAR.GT.100..OR.PAR.LT.1.)PM=3.
18100		IF(PAR.EQ.85.)MK=-1
18200	      GO TO 5155  
18300	65	W=-9900.-V(IJ-3)
18400	C  W=BG TIME OF MOVE.
18500		X=ABS(V(IJ-1))
18600		IF(NL.EQ.-56.OR.NL.EQ.-58)PM=2.
18700		Z=(BT-W)/VIJ2
18800	C  Z= % OF WAY THROUGH.
18900		IF(Z.GT.1.)Z=1.
19000		Y=V(LN)
19100		W=V(IJ+3)
19200		IF(X.EQ.7.)W=V(IJ+4)
19300		IF(NL.LT.-58)GO TO 16002
19400		PAR=(W-Y)*Z+Y
19500		IF(X.EQ.7.)GO TO 1600
19600		GO TO 1155
19700	C************** JUNE 1,71
19800	C   FOR "MOVX"
19900	C******** FEB/73
20000	C  THE .01 IS NEEDED FOR MOVE TO OR FROM 0.
20100	16002	PAR=RMOVX(W,Y,Z)
20200	C  SEE FUNCTION RMOVX 6/74 -- CAN'T HAVE -20→+20, ETC., -20→-40 OK.
20300	C  THIS NEEDS WORK!
20400		IF(X.NE.7.)GO TO 1155
20500		W=V(IJ+5)
20600		Y=V(IJ+3)
20700		X=RMOVX(W,Y,Z)
20800		GO TO 16003
20900	C  NEXT IS FOR MOVING RAND RANGES.
21000	C1600	PAR=(V(IJ+4)-Y)*Z+Y
21100	1600	W=V(IJ+3)
21200	C*********** BACK TO 65 IS NEW.   FEB. 15,71
21300		X=(V(IJ+5)-W)*Z+W
21400	C************ JUNE 1,71   
21500	16003	PAR=RAND(PAR,X)
21600		GO TO 1155
21700	67	LN=IJ+3
21800		NM=LN+VIJ2-1
21900		ML=1
22000		GO TO 1900
22100	4155	K=(PAR-9999.0)*100.+.1	
22200		P(L)=P(K)
22210		IF(L.EQ.2.AND.K.EQ.2)P2=PX2
22220	C  PX2=LAST UNPROCESSED VALUE OF P2 (+ OR -) 7/74
22300		PM=PL(K)
22400		GO TO 21551
22500	C   ANY # OVER 9999. REPEATS ANOTHER PARAM.(9999.21 REPEATS P21)
22510	C 7/74  **** NOTE PROBLEMS OF P2 WITH SUBR, TEMPO, TF AND RAND. TF.
22520	C ALSO DF.  THE REAL TIME VALUE PRINTED MAY HAVE GONE THROUGH MANY
22530	C  CHANGES.  HENCE WHEN TRANSFERING THE VALUE TO OTHER PARAMS OR
22540	C  INSTS GREAT CARE MUST BE TAKEN TO BE SURE THE RESULTS ARE CORRECT.
22600	6157	LN=V(LN-1)
22700		DO 1068 K=1,KL
22800	1068	IF(K.LT.KL)LN=LN+V(LN)+1
22900	2068	PM=LN+1
23000		PAR=LN+V(LN)
23100		GO TO 5155
23200	68	KL=NCNT(J,L)
23300		IF(KL.EQ.0.OR.KL.EQ.10000)KL=VIJ2
23400		PM=KL+1
23500		PAR=PM+V(KL)-1
23600		KL=PAR+1
23700		IF(V(KL).EQ.10000.)DUR(J)=BT
23800	C  'END' OR 'FINE' IN 'LIT' LIST.
23900		IF(V(KL).EQ.999.)KL=IJ+2
24000		NCNT(J,L)=KL
24100		GO TO 5155
24200	C ******* JAN 20  *************
24300	1155	IF(PAR.EQ.10000.)GO TO 5174
24400	C  TYPE 'END' OR 'FINE' AS LAST IN ANY STRING TO SET DURATION.
24500		IF((PAR.GT.9999.).AND.(PM.EQ.1.))GO TO 4155
24600	C****JULY 16,71 1155	IF((PAR.GT.9999.).AND.(PM.EQ.1.))GO TO 4155
24700	5155	P(L)=PAR
24800	21551	PL(L)=PM
24900		IF(ISUB)GO TO 601
25000		IF(L.EQ.2)GO TO 4203
25100	21552	IF(IDF.GE.0)GO TO 2155
25200		DF=PAR
25300	C DUTY FAC. IS ALWAYS % OF P2 - WHETHER CONSIDERING BASIC OR REAL TIME.
25400		IDF=0
25500	2155	CONTINUE
25600	
25700	9203      IF(KB.EQ.0)GO TO 1170     
25800	       NL=KB
25900	      DO 2203 K=1,KB    
26000	      X=OTH(NL,1) 
26100	      IF(X.LT.100000.)GO TO 2203     
26200	      L=X/100000.
26300	      Y=(X-L*100000.)/100.    
26400	      IX=Y  
26500	      JC=NL 
26600	      IF(J.EQ.L.AND.IX.EQ.ICT)GO TO 5203    
26700	2203  NL=NL-1     
26800	      GO TO 1170  
26900	4203      PR=P2 
26910		PX2=P2
26920	C TO SAVE THE UNPROCESSED P2 FOR 'P2 P2;' IN INPUT. 7/74
27000	      IF(T5.EQ.0)GO TO 7203   
27100		IF(IT3.LE.1.OR.BT.LT.TBG+TDUR)GO TO 6203
27200	3155	IT3=IT3+3
27300		TBG=TBG+TDUR
27400		TDUR=V(IT3)
27500		IF(BT.GE.TBG+TDUR)GO TO 3155
27600		T1=V(IT3+1)
27700		T2=V(IT3+2)
27800		CALL SQYY(AC,T1,T2,TDUR)
27900	6203	RA=PR 
28000		IF(BT.EQ.TBG)XT(J)=T1
28100		K=IT3
28200		RC=0  
28300		RD=1  
28400		KA=1  
28500		RB=0  
28600		Z=TDUR+TBG-BT	
28700		X=T1  
28800		Y=T2  
28900		YY=AC
29000		CHN=TBG	
29100		ZZ=TDUR	
29200		GO TO 4020  
29300	8203	P2=RA*RD    
29400	7203	P2=P2*T4
29500		X=P2*TF
29600	C  P2 IS KEPT WITHOUT TF*
29700		K=X+.5
29800		IF(X)K=X-.5
29900	72031	ROFF(J)=ROFF(J)+K-X
30000		IF(ABS(ROFF(J)).LT.1.)GO TO 7155
30100		Y=1.
30200		IF(ROFF(J))Y=-1.
30300		K=K-Y
30400		ROFF(J)=ROFF(J)-Y
30500	C  ROUND-OFF GAP WILL NOT EXCEED .001
30600	C*********** FEB 17,71
30700	7155	PP2=K/1000.
30800	C   AVOIDS ROUND-OFF PROBLEMS
30900	C AFTER ALL THIS P2 IN SUBR MAY NOT EQUAL PP2(REAL TIME) DF COMES LATER!
31000		IF(IPT(J,31).EQ.0)GO TO 6155
31100		IF(ICT)GO TO 1170
31200		X=V(IPT(J,31)+2)/2.
31300		Y=RAND(-X,X)
31400		IF(PP2.GE.0)GO TO 615
31500		MK=-1
31600		PP2=-PP2
31700	615	PP2=PP2-RDEV(J)+Y
31800		RDEV(J)=Y
31900	C  TOTAL RAND DEV. WON'T EXCEED P31
32000	C  SET P31 TO .0001 TO BRING VOICE BACK TO EXACT TIME(0 WON'T DO IT)
32100	
32200		K=PP2*1000.+.5
32300	C****** CHECK THIS OUT  1/10/72 :::::::
32400	61551	PP2=K/1000.
32500	C   NEVER MORE THAN .1( DEVIATION WITH RAN TF. (RTF=.05)
32600	6155	IF(ICT)GO TO 9203
32700		GO TO 2155
32800	5203      JD=Y*100-IX*100+.5  
32900	      IF(JD.GT.0)GO TO 3203   
33000		M=0
33100		P1(J)=PP1+PP2
33200	      GO TO 7021  
33300	3203      P(JD)=OTH(JC,2)     
33400		X=OTH(JC,3)
33500		IF(X.NE.1.)X=3.
33600	C   'EDITS' PRINT,NUM. OR 5 CHARS.
33700	      PL(JD)=X
33800	C   NEXT ADDED NOV.72  CHECK FOR SIDE AFFECTS !!!!! **********
33900		IF(JD.EQ.2)PP2=P2
34000	C   'TF' AND 'TEMPO' WILL NOT AFFECT PP2 'EDITS'.
34100	1170      IF(MK.OR.PP2)GO TO 2022   
34200	
34300		ZPAR=PP1
34400		P1(J)=PP1+PP2
34500	C   ZPAR IS USED HERE WHEN OP1(OMIT) IS .GT.0. OMIT IS IN REAL TIME.
34600		LK=INST(J)
34700	2021	IF(PP1.LT.OP1)GO TO 2612
34800		IF(INVIS(J).LT.0)GO TO 2170
34900	C  ALL PARAMS WILL PRINT,1ST TIME WHEN USING 'OMIT'.
35000		IF(INONLY.GT.0)GO TO 1204
35100	C*********** MAY 16,71 ↑↑↑
35200	6021	IF(P(NPA).NE.COPY(NPA).OR.PL(NPA).GT.1)GO TO 5021
35300	C******* MAY 25,71
35400	C  'LIT' DATA WILL ALWAYS PRINT.
35500		NPA=NPA-1
35600		IF(NPA.GT.2)GO TO 6021
35700	5021	DO 1304 K=3,NPA
35800	1304	COPY(K)=P(K)
35900	1204	IF(PL4.NE.1.)GO TO 2170
36000		P4=P4*AMPFAC
36100		L=0
36200		INP(J)=P4
36300		DO 1021	K=1,NINS
36400	1021	IF(P1(K).GT.PP1)L=L+INP(K)
36500		IF(L-IAMP-1)GO TO 2170
36600		IAMP=L
36700		AMPTIM=PP1
36800	2170	IF(MX.EQ.3)GO TO 2612
36900	C ********* MAY 17,71
37000	      PP1=PP1-OP1     
37100	C   PUTS SPACES BETWEEN NOTES .GT. .05( APART
37200		IF((MZ.NE.-1).OR.(A.GE.PP1))GO TO 5170
37300		IF(INONLY)WRITE(JOUT,902)
37400		A=PP1+.05
37500	5170	ML=10
37600		IF(NPA.LT.10)ML=NPA
37700		MLX=3
37800		NL=2
37900		IF(INVIS(J).EQ.0)GO TO 3170
38000		LK=0
38100	C  NEEDED TO INIT INVISIBLE MODE PRINT-OUT (NO INST NAME, P1, P2)
38200	C  NEXT CREATES FORMAT DATA IN IFM ARRAY.
38300	31701	KL=3
38400		GO TO 4170
38500	3170	IF(.NOT.INONLY.AND.J.NE.INONLY)GO TO 2612
38600		VX(1)=PP1
38700		IF(DF.GT.0)GO TO 6170
38800		VX2=-DF
38900		IF(VX2.GT.PP2)VX2=PP2
39000	C NEG. DF=FIXED NOTE DUR. NOT.GT.PP2   7/74 COLGATE  -AND BELOW
39100		GO TO 7170
39200	6170	IF(DF.LT.100)GO TO 8170
39300	C DF>100 = FIXED REST AREA BEFORE NEXT ATTACK.
39400		VX2=PP2-DF+100.
39500		IF(VX2.LE.0)VX2=PP2/2.
39600	C NO NEG. TIME VALUES ALLOWED.
39700		GO TO 7170
39800	8170	VX2=PP2*DF
39900	7170	IFM3='F9.3,'
40000		IFM4=IFM3
40100		KL=5
40200		IF(NPA.LT.3)GO TO 2121
40300	
40400	4170	NL=2
40500		DO 1121 K=MLX,ML
40600		X=P(K)
40700		L=PL(K)
40800		IF(L-2)321,521,621
40900	C  L=1 NUMBS,  =2 NOTES,FUNCS,  =3 LITS.
41000	321	IF(X.GE.0)GO TO 4211
41100		IFM(KL)=IFCOM
41200		NL=NL+1
41300		KL=KL+1
41400	4211	IFM(KL)='F9.3,'
41500	C   CREATES 'F9.3'
41600	421	VX(KL-NL)=X
41700		GO TO 1121
41800	521	IFM(KL)=IFM2
41900	C   CREATES '1XA5'
42000		LN=X
42100		VX(KL-NL)=SCAL(LN)
42200		GO TO 42
42300	621	IF(L.GT.3)GO TO 721
42400		VX(KL-NL)=X
42500	C ABOVE LETS A5 WD BE USED IN SUBR BY SETTING PL(N)=3.
42600	42	IFM(KL)=IFM2
42700		GO TO 1121
42800	721	LN=X
42900		IFM(KL)=I1X
43000		NL=NL+1
43100		DO 821 M=1,LN-L+1
43200		KL=KL+1
43300		IOUT(KL-NL)=IV(L-1+M)
43400	821	IFM(KL)=IA1
43500	1121	KL=KL+1
43600	
43700	C  NO MORE THAN 80 ITEMS IN FORMAT.
43800	2121	IF(KL.LE.80)GO TO 21211
43900	21212	FORMAT(' ERROR! TOO MANY LIT. ITEMS')
44000		TYPE 21212
44100	21211	DO 921 M=KL+1,80
44200	921 	IFM(M)=IBLA
44300		IFM(KL)=')'
44400		L=KL-NL-1
44500		IF(MX)WRITE(1,IFM)LK,(VX(K),K=1,L)
44600		IF(.NOT.MZ)GO TO 30210
44700		IF(ML.GE.NPA)IFM(KL)='$)'
44800		WRITE(JOUT,IFM),LK,(VX(K),K=1,L)
44900	30210	IF(ML.GE.NPA)GO TO 3021
45000		MLX=ML+1
45100		ML=ML+10
45200		IF(ML.GT.NPA)ML=NPA
45300		LK=IBLA
45400		GO TO 31701
45500	3021	IF(MX)WRITE(1,3616)INST(J),ICT
45600	30211	IF(MZ)WRITE(JOUT,8902),J,INST(J),ICT,BT
45700	2612      PP1=ZPAR     
45800	         GO TO 21 
45900	8902	FORMAT('+;<'I2,1XA5,I4,' >',F7.3)
46000	3616	FORMAT(';PRINT(P1);< ',A5,I4)
46100	C   PRINTS RESTS  
46200	2022	PP2=ABS(PP2)
46300	C   IN THIS VERSION TYPE 'R' FOR RESTS IN ANY PARAM BUT P2. 
46400	C   FOR RESTS IN SEQS. TYPE -DUR.   
46500	C   WHEN RANDOM RESTS ARE CHOSEN, SEQS. MISS NOTES.
46600	C    RAN RESTS ARE TOUCHED BY SUBROUTINES ONLY BY SETTING IREST!!
46700		INP(J)=0
46800		P1(J)=PP1+PP2
46900	C   STORES NEXT P1 TIME FOR THIS INST.
47000		IF((MZ.NE.-1).OR.(PP1.LT.OP1))GO TO 21   
47100	      X=PP1-OP1  
47200		IF(A.GE.X)GO TO 121
47300		WRITE(JOUT,902)
47400		A=X+.05
47500	121	IF(INONLY.OR.J.EQ.INONLY)WRITE(JOUT,1110),INST(J),X,PP2,
47600		1 J,INST(J),ICT
47700	21	PR=ABS(PR)
47800	      BG(J)=BT+PR 
47900	      IF(ICT.EQ.DUR(J)-10000.)GO TO 5174 
48000	      IF(BG(J).LT.DUR(J))GO TO 500  
48100	5174      BG(J)=19999. 
48200	      DO 3174 K=1,NINS  
48300	C   INSERTS CANT FOLLOW LAST REGULAR NOTE.
48400	C   (ADD REST IF INSERT AT END IS NEEDED.)    
48500	3174      IF(BG(K).LT.19999.)GO TO 500     
48600	      GO TO 175   
48700	C   CHOOSES INST WITH NEXT BEGIN TIME.    
48800	500      J=1   
48900		BW=BT
49000	      NL=NINS+KB
49100	      DO 22 K=2,NL
49200	22      IF(BG(J).GT.BG(K))J=K 
49300		IF(J.GT.NINS.OR.NINS.EQ.1)GO TO 3022
49400		J=1
49500		DO 5022 K=2,NINS
49600		X=P1(J)
49700		Y=P1(K)+.0001
49800	C  LOWEST NUMBERED INST WILL COME 1ST IF BG TIMES ARE VERY CLOSE
49900		IF(BG(J).EQ.19999.)X=19999.
50000		IF(BG(K).EQ.19999.)Y=19999.
50100	5022	IF(X.GT.Y)J=K
50200	C   ABOVE IS FOR ROUND-OFF PROBLEMS WITH 'TEMPO' AND 'CONDUCT'.
50300	3022      BT=BG(J)    
50400	      IF((BT.EQ.19999.).OR.(P1(J).GE.DURX))GO TO 175
50500		IF(CNT(J).GT.0)GO TO 1022
50600	      IF(CNT(J).EQ.0)P1(J)=0  
50700	      IF(CNT(J).EQ.-1)CNT(J)=0
50800	C   N.B. 'TF' CONTROLS BG TIME WHEN BG .GT. 0   
50900	1022      IF((BT.LT.T6).OR.(IT3.GT.1))GO TO 1108    
51000	      T4=T2 
51100	      T5=0  
51200	      T6=10000.   
51300	      GO TO 1108    
51400	1175	FORMAT('+',A5,'=',F7.3,2X,$)
51510	1109	FORMAT(' FINISH; < ',A5,'.DAT')
51600	1110	FORMAT(' <',A5,2F9.3,2X,'******* REST <'I2,1XA5,I4)
51700	1603  FORMAT(' AMPL. FACTOR=',F4.2,', P4 MAX.AMP.=',I4,', AT TIME'
51800		1,F8.3)
51910	175	IF(MZ)WRITE(JOUT,1109),ISLAC
52000		IF(MX.GE.0)GO TO 4175
52110		WRITE(1,1109),ISLAC
52200		END FILE 1
52300	603	FORMAT(' TOTAL DURS:  ',$)
52400	4175	CALL ENDSUB
52500	C  CLEARS CNTL O --- IF YOU HAVE HIT IT.
52600		WRITE(JOUT,1603),AMPFAC,IAMP,AMPTIM
52700		WRITE(JOUT,603)
52800	5175	DO 2175 K=1,NINS
52900		X=P1(K)-OP1
53000		IF(MZ)GO TO 6175
53100		TYPE 1175,INST(K),X
53200		GO TO 2175
53300	6175	WRITE(JOUT,1175),INST(K),X
53400	2175	CONTINUE
53510	3175	TYPE 1023,ISLAC
53600		END